Xcode:11.2.1
下面的代码是一个包含两个组件的简单表单;选择器(选择字母)和文本(显示所选字母)。代码编译并运行,但是当选择一个字母时,它不会出现在“选定...”文本中。此外,第一次(仅)选择一个字母时,Xcode 会显示一个(虚假的?)运行时警告。
struct ContentView: View {
@State private var letter = ""
private let letters = ["Alpha", "Bravo", "Charlie"]
var body: some View {
NavigationView {
Form {
Picker("Select a letter", selection: $letter) {
ForEach(0..<letters.count) {
Text(self.letters[$0])
}
}
Text("Selected letter: \(letter)")
}
.navigationBarTitle("Main Menu")
}
}
}
有关信息:运行时警告:
[TableView] 仅警告一次:UITableView 被告知布局其
不在视图层次结构中的可见单元格和其他内容
(表视图或其超级视图之一尚未添加到
窗户)。这可能会通过强制表视图内的视图来导致错误
在没有准确信息的情况下加载并执行布局(例如表视图
边界、特征集合、布局边距、安全区域插入等),以及
由于额外的布局也会造成不必要的性能开销
通过。在以下位置创建一个符号断点
UITableViewAlertForLayoutOutsideViewHierarchy 在
调试器并查看导致这种情况发生的原因,这样就可以避免这种情况
如果可能的话,完全执行操作,或者推迟到表视图完成为止
已添加到窗口。表格视图:
<_ttc7swiftuip33_bfb370ba5f1baddc9d83021565761a4925 uitableview>>
Picker 中的 ForEach 类型应与选择类型对齐。
这是一个应该适合您的更正代码:
@State private var letter = ""
private let letters = ["Alpha", "Bravo", "Charlie"]
var body: some View {
NavigationView {
Form {
Picker("Select a letter", selection: $letter) {
ForEach(letters, id: \.self) { option in
Text(option)
}
}
Text("Selected letter: \(letter)")
}
.navigationBarTitle("Main Menu")
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)