我试图将我的 SwiftUI 视图拆分为尽可能小的可重用组件。所以我有位于顶部的 MainView,然后有两个视图(MyContentView 和 MenuView),它们都位于 MainView 中。两个内部视图都有一些我想在 MainView 中更新某些内容的功能。所以我想我可以将一些函数作为参数从 MainView 传递给内部视图,所以当在内部视图中按下按钮时,它会触发 MainView 中的代码。我设法最接近它的是导致每次更新内部视图时都会触发函数参数。实现这一目标的最佳方法是什么?这是我的代码示例:
主视图:
struct MainView: View {
var body: some View {
VStack {
MyContentView(self.$doSomething)
MenuView(self.$doSomething)
}
}
func doSomething() {
print("do something")
}
}
struct MyContentView : View {
var doSomething : ()
var body: some View {
Button(action: { self.doSomething }) { Text("do something") }
}
}
struct MenuView : View {
var doSomething : ()
var body: some View {
Button(action: { self.doSomething }) { Text("Menu do something") }
}
}
Run Code Online (Sandbox Code Playgroud)
能够从内部视图接收回调的最佳实践是什么?
下面的变体作品。使用 Xcode 11.4 测试。
struct MainView: View {
var body: some View {
VStack {
MyContentView(doSomething: self.doSomething)
MenuView(doSomething: self.doSomething)
}
}
func doSomething() {
print("do something")
}
}
struct MyContentView : View {
var doSomething : () -> ()
var body: some View {
Button(action: { self.doSomething() }) { Text("do something") }
}
}
struct MenuView : View {
var doSomething : () -> ()
var body: some View {
Button(action: { self.doSomething() }) { Text("Menu do something") }
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2036 次 |
最近记录: |