我有一个带有TabView的屏幕,其中包含两个标签:
...
var body: some View {
TabView() {
ScreenViewOne().tabItem {
Image(systemName: "calendar")
Text("Screen one")
}.tag(0)
ScreenViewTwo().tabItem {
Image(systemName: "list.bullet")
Text("Screen two")
}.tag(1)
}
}
...
当我点击“屏幕二”选项卡时,应用程序崩溃并出现以下错误:
前提条件失败:未知属性:4294967295
如果我对两个选项卡使用相同的屏幕,如下所示,则一切正常,并且没有崩溃:
...
var body: some View {
TabView() {
ScreenViewOne().tabItem {
Image(systemName: "calendar")
Text("Screen one")
}.tag(0)
ScreenViewOne().tabItem {
Image(systemName: "list.bullet")
Text("Screen two")
}.tag(1)
}
}
...
更改屏幕顺序,内容等无济于事。
答案 0 :(得分:0)
原来,这是由ScreenViewOne中的List元素引起的,该元素具有多个部分:
var body: some View {
List {
Section(header: Text("Section 1")) {
ForEach(items) { item in
Text("\(item)")
}
}
.backgroundColor(Color.white)
Section(header: Text("Section 2")) {
ForEach(items) { item in
Text("\(item)")
}
}
.backgroundColor(Color.white)
}
}
更具体地说,由于存在引起问题的backgroundColor
修饰符。
要解决此问题,我删除了两个修饰符,并在自定义init方法中实现了UITableViewHeaderFooterView.appearance().tintColor = UIColor.clear
:
init(factory: Factory) {
...
UITableViewHeaderFooterView.appearance().tintColor = UIColor.clear
...
}