iOS 15中SwiftUI List无法选中问题求助
解决SwiftUI List在iOS 15中无法选中的问题
你的问题出在iOS 15中List的selection功能依赖NavigationView环境,而iOS 16及以后的版本移除了这个限制,允许在非NavigationView场景下使用列表选择。
修复步骤
将你的List包裹在NavigationView内即可解决iOS 15的选中失效问题。修改后的代码如下:
import SwiftUI struct ContentView: View { @State var array = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten"] @State var selectedItem: Int? = nil var body: some View { NavigationView { // 添加这层NavigationView VStack { Text("Snork!") List(Array(array.enumerated()), id: \.offset, selection: $selectedItem) { index, item in Text(item).tag(index) } .padding() } .navigationTitle("List Selection") // 可选,添加导航标题保证NavigationView正常布局 } } } #Preview { ContentView() }
额外说明
- iOS 15中,
List的selection绑定需要依托NavigationView提供的环境上下文才能生效,这是旧版SwiftUI的设计限制。 - 如果你不需要显示导航栏,可以通过
.navigationBarHidden(true)隐藏,但仍需保留NavigationView的结构。 - 你的
tag设置是正确的,index与selectedItem的类型匹配,这部分无需修改。
内容的提问来源于stack exchange,提问作者Duncan C
相关产品推荐
相关产品推荐

