Swift UI 列出 Mac Catalyst 上不匹配的部分
Posted
技术标签:
【中文标题】Swift UI 列出 Mac Catalyst 上不匹配的部分【英文标题】:Swift UI List mismatched sections on Mac Catalyst 【发布时间】:2021-02-01 05:36:02 【问题描述】:尝试在 Mac 上使用催化剂构建列表视图
这是我的列表视图代码。我有三个部分(国家、州、城市)。填充列表的数据是视图的属性。当我在 Mac 上运行此代码时,城市部分显示国家数据。在 iPhone 和 iPad 上看起来不错。附上截图
struct ContentView: View
private var countries: [String] = [ "United States of America",
"Australia",
"India",
"England",
"New zealand",
"Switzerland",
"Canada"]
private var states: [String] = [ "Colorado",
"Texas",
"Georgia",
"Florida",
"California",
"Arizona",
"Maryland",
"New Jersey",
"North Carolina",
"South Carolina",
"Alabama"]
private var cities: [String] = [ "Los Angeles",
"San Franscisco",
"Atlanta",
"Miami",
"Dallas",
"Austin"]
var body: some View
List
Section(header: Text("Countries"))
ForEach(0 ..< countries.count)
Text(countries[$0])
Section(header: Text("States"))
ForEach(0 ..< states.count)
Text(states[$0])
Section(header: Text("Cities"))
ForEach(0 ..< cities.count)
Text(cities[$0])
【问题讨论】:
【参考方案1】:由于您的 ForEach 未识别(所有三个部分都有相同的索引),请尝试为行提供唯一 ID,例如
List
Section(header: Text("Countries"))
ForEach(0 ..< countries.count)
Text(countries[$0]).id("1.\($0)")
Section(header: Text("States"))
ForEach(0 ..< states.count)
Text(states[$0]).id("2.\($0)")
Section(header: Text("Cities"))
ForEach(0 ..< cities.count)
Text(cities[$0]).id("3.\($0)")
【讨论】:
谢谢。这似乎有效。为什么它可以在没有任何 id 的 iphone 和 ipad 上运行?只是好奇 我们只能猜测——但这肯定是由于 SwiftUI 内部对 ios 和 Catalyst 的不同实现。以上是关于Swift UI 列出 Mac Catalyst 上不匹配的部分的主要内容,如果未能解决你的问题,请参考以下文章
Mac Catalyst 中的弃用警告,但仅在 Objective-C 中,而不是在 Swift 中
苹果将代码教学应用Swift Playgrounds引入Mac
Xcode 11 - 在催化剂 Swift 中禁用调整大小模式