如何在不改變應用程式結構的情況下使 ContentView_Previews 作業?
import SwiftUI
@main
struct testApp: App {
@State var function:(() -> Void)? = {}
var body: some Scene {
WindowGroup {
ContentView(myFunction: $function)
}
}
}
struct ContentView: View {
@State var text: String = "Parent"
var isNavigationViewAvailable = true
@Binding var myFunction: (() -> Void)?
func function() {
print("This view is \(text)")
}
var body: some View {
VStack {
if isNavigationViewAvailable {
Button(action: {
if myFunction != nil {
myFunction!()
}
}, label: {
Text("Button")
})
}
if isNavigationViewAvailable {
NavigationView {
List {
NavigationLink("Child1") {
ContentView(text: "Child1", isNavigationViewAvailable: false, myFunction: $myFunction)
}
NavigationLink("Child2") {
ContentView(text: "Child2", isNavigationViewAvailable: false, myFunction: $myFunction)
}
NavigationLink("Child3") {
ContentView(text: "Child3", isNavigationViewAvailable: false, myFunction: $myFunction)
}
}
}
}
}.onAppear {
if !isNavigationViewAvailable {
myFunction = {
function()
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
@State var function:(() -> Void)? = {}
static var previews: some View {
ContentView(myFunction: $function)
}
}
我想保留這種結構,以便一個物件應該具有同一類的子物件。并有能力運行其子物件的功能。這個問題與我之前的問題有關,但我找到了更好的方法來實作這一點。
uj5u.com熱心網友回復:
你可以像這樣使用它
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView(myFunction: .constant({}))
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367365.html
