SwiftUI:列表项跳转到选取器表单中的标题

Posted

技术标签:

【中文标题】SwiftUI:列表项跳转到选取器表单中的标题【英文标题】:SwiftUI: Jump of List Items to headline in a Picker Form 【发布时间】:2020-06-04 10:32:49 【问题描述】:

已解决:清理构建文件夹并更新到最新的 xCode 版本后,我的问题就消失了。

我有一个导航视图并且我在一个表单中。我的问题是,在这个表单中,我有一个带有选择器的部分,它通过 ios 默认带有一个 navigationLink 到一个新视图,它显示了我所有的选项。这个选项在一个列表中,但是一旦这个视图出现,它们就在 navgationTitle 下方,一秒钟后它们会跳到正确的位置。我该如何解决这个跳跃问题?我认为问题与 Picker 有关,因为它在内部调用导航链接。

我使用 XCode 11.5,这是导致问题的示例代码:

@State var i = 0
var body: some View 
   NavigationView 
     Form 
         Section 
            Picker(selection: $i, label: Text("Pick")) 
                ForEach(0..<5,id: \.self) 
                   Text($0.description)
                
             
         
     .navigationBarTitle("PickerTest")
   

这个答案帮助我解决了一个非常相似的问题,但不适用于这种特殊情况https://***.com/a/59591337/13679052

【问题讨论】:

【参考方案1】:

您可以尝试在Viewinit 中添加此内容:

UITableView.appearance().tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: Double.leastNonzeroMagnitude))

这将删除NavigationBarForm 之间的默认空格(并防止跳跃)。如果您想保留此空间,您可以将height 指定为其他值。

注意:这将在全局范围内更改 UITableView 的行为,而不是仅针对特定的 View

【讨论】:

以上是关于SwiftUI:列表项跳转到选取器表单中的标题的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 表单中的选取器在选择一个值后变为灰色

是否可以在 SwiftUI 的表单中永久显示选取器?

SwiftUI 无法删除选取器上方的空间 - 表单版本

如何正确处理更新视图中的选取器(SwiftUI)

使用带有 JQuery 可拖动的内联块时,如何阻止列表项跳转?

表单中的 SwiftUI 选择器 - 索引超出范围