SwiftUI-选项卡视图项

SwiftUI-选项卡视图项,swiftui,tabview,Swiftui,Tabview,单击选项卡视图项时是否可以重新创建该项。 例如,如果我在tabitem1上,然后单击tabitem2,然后返回到tabitem1,我希望重新创建tabitem1。我可以在SwiftUI中执行此操作吗?下面是一个示例,说明如何在更改活动选项卡项时重新加载所有视图。在TabView中使用选择参数,然后在ContentView中使用该选择使其在选择更改时重新加载 struct ContentView: View { @State var selection = 0 var body:

单击选项卡视图项时是否可以重新创建该项。
例如,如果我在tabitem1上,然后单击tabitem2,然后返回到tabitem1,我希望重新创建tabitem1。我可以在SwiftUI中执行此操作吗?

下面是一个示例,说明如何在更改活动选项卡项时重新加载所有视图。在TabView中使用选择参数,然后在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 
    }
}
struct ContentView:View{
@状态变量选择=0
var body:一些观点{
选项卡视图(选择:$selection){
DefaultView(字符串:“第一个”)
.tag(0)
.tabItem{
图像(系统名称:“list.dash”)
文本(“菜单”)
}
.id(UUID())
DefaultView(字符串:“秒”)
.标签(1)
.tabItem{
图像(系统名称:“正方形和铅笔”)
文本(“命令”)
}
}

.id(selection==0?UUID():UUID())/下面是一个示例,说明如何在更改活动选项卡项时重新加载所有视图。您可以在选项卡视图中使用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 
    }
}
struct ContentView:View{
@状态变量选择=0
var body:一些观点{
选项卡视图(选择:$selection){
DefaultView(字符串:“第一个”)
.tag(0)
.tabItem{
图像(系统名称:“list.dash”)
文本(“菜单”)
}
.id(UUID())
DefaultView(字符串:“秒”)
.标签(1)
.tabItem{
图像(系统名称:“正方形和铅笔”)
文本(“命令”)
}
}

.id(selection==0?UUID():UUID())//你能提供更多关于你用一些要演示的代码试图实现什么的细节吗?你能提供更多关于你用一些要演示的代码试图实现什么的细节吗?回答得很好,大卫,这救了我的命!我不清楚的是.id(selection==0?UUID():UUID()的目的说.id(UUID())不是更干净吗?回答得好,大卫,这救了我的命!我不清楚的是.id(selection==0?UUID():UUID())的用途。说.id(UUID())不是更干净吗?