为什么 SwiftUI Picker 不改变值?

问题描述 投票:0回答:1

我有这个简单的代码:

import SwiftUI

struct ExampleView: View {

    @State private var selectedTab: String = "tab1"

    var body: some View {
        VStack {
            Picker("Mode", selection: $selectedTab) {
                Text("tab1").tag("tab1")
                Text("tab2").tag("tab2")
                Text("tab3").tag("tab3")
            }
            .pickerStyle(.segmented)
            .padding([.horizontal, .top])
        
            Form {
                switch selectedTab {
                    case "tab1":
                        TabOneView()
                    case "tab2":
                        TabTwoView()
                    case "tab3":
                        TabThreeView()
                    default:
                        TabOneView()
                }
            }
        }
        .navigationTitle("Title")
        .navigationBarTitleDisplayMode(.inline)
    }
}

当我在预览中尝试此操作时,它可以正常工作,但是当我在应用程序中使用它时,这个

View
是用另一个
NavigationLink
View
调用的,选择器似乎冻结了:按另一个选项不会更改值,因此视图也不会改变(在视觉上,默认选项仍保持选中状态)。

家长

View
:

struct ParentView: View {

    var body: some View {
        Form {
            // some other code
        
            Section(header: Text("SUBVIEWS")) {
                NavigationLink {
                    ExampleView()
                } label: {
                    Text("Example")
                }
                NavigationLink {
                    Example2View()
                } label: {
                    Text("Example2")
                }
            }
        }
        .navigationTitle("ParentView")
        .navigationBarTitleDisplayMode(.inline)
    }
}

我还尝试使用方法

.onChange
在变量
selectedTab
上打印值,但它不会打印任何内容(同义词是值未更改)。

它是这样的: enter image description here

swift forms swiftui picker
1个回答
0
投票

.zIndex(1)
上使用
Picker
可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.