【发布时间】:2021-03-27 09:36:09
【问题描述】:
当你点击它时是否可以重新创建 tabview 项目。 例如,如果我在 tabitem1,然后单击 tabitem2,然后返回 tabitem1,我希望重新创建 tabitem1。我可以在 SwiftUI 中做到这一点吗?
【问题讨论】:
-
您能否提供更多详细信息,说明您尝试使用一些演示代码来实现什么?
当你点击它时是否可以重新创建 tabview 项目。 例如,如果我在 tabitem1,然后单击 tabitem2,然后返回 tabitem1,我希望重新创建 tabitem1。我可以在 SwiftUI 中做到这一点吗?
【问题讨论】:
这里是一个示例,如何在更改活动的 TabBar 项时重新加载所有视图。您在 TabView 中使用 selection 参数,然后在 ContentView 中使用该选择使其在选择更改时重新加载。
struct ContentView: View {
@State var selection = 0
var body: some View {
TabView(selection: $selection) {
DefaultView(string: "First")
.tag(0)
.tabItem {
Image(systemName: "list.dash")
Text("Menu")
}
.id(UUID())
DefaultView(string: "Second")
.tag(1)
.tabItem {
Image(systemName: "square.and.pencil")
Text("Order")
}
}
.id(selection == 0 ? UUID() : UUID()) //<< here is selection used to make the view reload
}
}
如果您检查 DefaultView() 上的 init() 方法,您会看到每次选择更改都会调用它。
【讨论】: