SwiftUI:点击TabView的标签时崩溃

时间:2020-05-13 09:23:57

标签: ios swift swiftui

我有一个带有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)
    }
}

...

更改屏幕顺序,内容等无济于事。

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 

    ...
  }