SwiftUI 4列表初始化程序在iOS中不可用。

25

在创建列表时,之前的Xcode版本允许在iOS上进行以下操作:

List(tabs, selection: $lastTab) {tab in
…
} 

现在会出现一个错误:

'init(_:selection:rowContent:)' is unavailable in iOS

同样适用于

List(tabs, id:\.self, selection: $lastTab)

以及其他变体,例如:

List(selection: $lastTab) {
   ForEach(tabs, id:\.self) {tab in 
...
}

还有其他人遇到过这个问题吗?


我有同样的问题,但在我的情况下,编辑器给了我一个“修复”选项,它插入了一个看起来不寻常的自动完成列表。 - Stoic
@Stoic 那个“修复”是什么? - Ferdinand Rios
2022年的苹果教程出现了相同的错误 https://developer.apple.com/tutorials/swiftui-concepts/defining-the-source-of-truth-using-a-custom-binding - Jonny
1个回答

59
您可能忘记将选择设为可选,即:
@State private var lastTab: Int? = 0   // << here !! `Int?`

List(tabs, selection: $lastTab) {tab in
// ...
}

经过验证:Xcode 14b3 / iOS 16


7
错误信息有误导性。 - winner.ktw
请注意,这可能会导致.sheet/.popover的问题!对于我来说,使用可选项作为TabView选择总是在呈现表时切换回第一个选项卡。为了解决这个问题,我将可选项绑定转换为非可选项绑定。 - alexkaessner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接