bee*_*ore 22
我有一个包含使用列表的视图的 TabView。切换选项卡时,我的应用程序因类似错误而崩溃:“前提条件失败:属性未能设置初始值:99”这崩溃了:
var body: some View {
TabView {
ListView()
.tabItem {
Image(systemName: "list.dash")
Text("List")
}
Run Code Online (Sandbox Code Playgroud)
将 ListView 包装在 NavigationView 中修复了崩溃。我在Caleb Wells 的“Swift Live – 007 SwiftUI TabView && List”上看到了 NavigationView 的使用。 https://youtu.be/v1A1H1cQowI
这有效:
var body: some View {
TabView {
NavigationView { ListView() }
.tabItem {
Image(systemName: "list.dash")
Text("List")
}
Run Code Online (Sandbox Code Playgroud)
Fer*_*ndo 10
我也遇到过这种情况。我只是想分享它,以防有人觉得它有用。
简答
将我的视图包装成 aNavigationView会引发错误。使用.navigationViewStyle(StackNavigationViewStyle())解决了我的问题。
长答案
我有这样的事情:
NavigationView {
GeometryReader { proxy in
VStack {
Text("Dummy")
Spacer()
MyView() // CONTAINS HAS A GEOMETRY READER TOO
.frame(width: min(proxy.size.width, proxy.size.height),
height: min(proxy.size.width, proxy.size.height))
Spacer()
Text("Dummy")
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,MyView也有一个GeometryReader内部。所描述的代码将失败。如果NavigationView被移除,则不会发生前置条件失败。
我曾经.navigationViewStyle(StackNavigationViewStyle())在NavigationView和解决了我的问题。
我在模拟器上遇到过这个运行时错误。就我而言,问题是NavigationBarItems,我在错误的块中使用了它,如下所示:
NavigationView {
Group {
if something {
ScrollView {
...
}//ScrollView
} else {
...
}
}//group
.navigationBarItems(trailing: self.favoriteItem) // CRASH**
}
Run Code Online (Sandbox Code Playgroud)
我移动了NavigationBarItems修改器并将其交给ScrollView:
NavigationView {
Group {
if something {
ScrollView {
...
}//ScrollView
.navigationBarItems(trailing: self.favoriteItem) // NO CRASH**
} else {
...
}
}//group
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8173 次 |
| 最近记录: |