无法在 swift ui 中单击分段选择器

Posted

技术标签:

【中文标题】无法在 swift ui 中单击分段选择器【英文标题】:Unable click on segmented picker in swift ui 【发布时间】:2020-05-23 09:45:20 【问题描述】:

我正在为不同的场景重复使用一个视图。一个是模态窗口,第二个也是模态的,但在导航视图中。

我的问题是,只有当视图是模式视图而不是导航视图时,我才能在选择器中的选项之间切换。如果在导航视图中,我将无法单击选择器中显示的任何选项。

 ZStack 
        Color("my-orange").edgesIgnoringSafeArea(.top)

        VStack(alignment: .leading) 
            if !self.picture 
                Image("van")
                    .resizable()
                    .frame(width: UIScreen.main.bounds.width, height: 275)
                    .padding(.leading)
            

            Picker(selection: $langauge, label: Text("Test")) 
                ForEach(0..<contentLanguages.languages.count, id:\.self)  index  in
                    Group 
                        if self.contentLanguages.languages[index].isOn 
                            Text(self.contentLanguages.languages[index].country).tag(index)
                            .foregroundColor(.white)
                        
                    
                

            .pickerStyle(SegmentedPickerStyle())
                .padding([.leading, .trailing], 60)
                .padding([.top, .bottom])
                .background(Color("my-orange"))

            Spacer()
            TabBar(index: $index)
                .offset(y: self.picture ? -30 : 0)
        .edgesIgnoringSafeArea(.all)
    

这是我无法在选项之间切换的视图的外观

在这里我可以在同一个视图中切换,但不能作为导航视图打开

更新:

我发现 .edgeIgorningSafeArea 存在问题。当我删除这部分代码时,我可以切换两种场景,但我希望切换器始终位于顶部。

【问题讨论】:

【参考方案1】:

我已经通过将选择器移动到 NavigationView -> NavigationLink.navigationBarItems 所在的视图来弄清楚

来源选择器在 if 语句下,并显示何时需要。

我现在的问题是:如果我有选择器作为 navigationBarItems 我如何处理该视图上的事件?

【讨论】:

以上是关于无法在 swift ui 中单击分段选择器的主要内容,如果未能解决你的问题,请参考以下文章

ios 分段选择器 数据无法刷新怎么回事啊

日期选择器 + 分段控制 + 一些标签

如何在 Swift UI 中将嵌套的 JSON 值显示到选取器视图中?

单击 ImageView 并在 Swift/Xcode 中执行没有选择器的函数

带有“空”和 0...9 的 Swift UI 多个选择器

Swift UI 中的 UIPicker