swiftui - NavigationBarTitle 导致 TabView 内部出错
问题描述
每当我有一个嵌套在 TabView 中的 NavigationView 时,我就开始在控制台中收到一条错误消息,我收到以下错误。有解决办法吗?
struct ContentView: View {
var body: some View {
TabView{
NavigationView{
Text("Hello, world!")
.padding()
.navigationBarTitle("Hello World")
}
.tag(0)
.tabItem {
Text("Main")
}
NavigationView{
Text("Hello, world!")
.padding()
}
.tag(1)
.tabItem {
Text("Secondary")
}
}.edgesIgnoringSafeArea(.top)
}
}
我的控制台吐出以下错误:
2021-03-26 14:14:59.294828-0600 Playground[39119:2828740] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x600001ae5fe0 'BIB_Trailing_CB_Leading' H:[_UIModernBarButton:0x7fdded4274f0]-(6)-[_UIModernBarButton:0x7fdded428920'Hello World'] (active)>",
"<NSLayoutConstraint:0x600001ae6030 'CB_Trailing_Trailing' _UIModernBarButton:0x7fdded428920'Hello World'.trailing <= _UIButtonBarButton:0x7fdded7079f0.trailing (active)>",
"<NSLayoutConstraint:0x600001ae0230 'UINav_static_button_horiz_position' _UIModernBarButton:0x7fdded4274f0.leading == UILayoutGuide:0x6000000df1e0'UIViewLayoutMarginsGuide'.leading (active)>",
"<NSLayoutConstraint:0x600001ae94f0 'UINavItemContentGuide-leading' H:[_UIButtonBarButton:0x7fdded7079f0]-(0)-[UILayoutGuide:0x6000000df100'UINavigationBarItemContentLayoutGuide'] (active)>",
"<NSLayoutConstraint:0x600001aee800 'UINavItemContentGuide-trailing' UILayoutGuide:0x6000000df100'UINavigationBarItemContentLayoutGuide'.trailing == _UINavigationBarContentView:0x7fdded4253a0.trailing (active)>",
"<NSLayoutConstraint:0x600001ae9cc0 'UIView-Encapsulated-Layout-Width' _UINavigationBarContentView:0x7fdded4253a0.width == 0 (active)>",
"<NSLayoutConstraint:0x600001aeebc0 'UIView-leftMargin-guide-constraint' H:|-(0)-[UILayoutGuide:0x6000000df1e0'UIViewLayoutMarginsGuide'](LTR) (active, names: '|':_UINavigationBarContentView:0x7fdded4253a0 )>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x600001ae5fe0 'BIB_Trailing_CB_Leading' H:[_UIModernBarButton:0x7fdded4274f0]-(6)-[_UIModernBarButton:0x7fdded428920'Hello World'] (active)>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
解决方案
我在这里找到了答案:
SwiftUI NavigationView navigationBarTitle LayoutConstraints 问题
我需要添加 .navigationViewStyle(StackNavigationViewStyle())
当我将代码更新为此时,错误消失了:
struct ContentView: View {
var body: some View {
TabView{
NavigationView{
Text("Hello, world!")
.padding()
.navigationTitle("Hello World")
}
.navigationViewStyle(StackNavigationViewStyle())
.tag(0)
.tabItem {
Text("Main")
}
NavigationView{
Text("Hello, world!")
.padding()
}
.tag(1)
.tabItem {
Text("Secondary")
}
}.edgesIgnoringSafeArea(.top)
}
}
推荐阅读
- c++ - 在 QT 中用完全透明的笔“绘图”
- python - 在数据框python中迭代具有唯一值的槽单元
- multithreading - 共享指针如何导致多线程中的线程安全
- swift - 斯威夫特 5.1 。使用 UITableView 将 firestore 文档分页 x 次
- javascript - 拆分、求和和迭代整数数组,直到每一边相等(Javascript)
- javascript - 从购物车中删除物品 Redux,React
- php - 如何在 Laravel 中设置 %Y-%m 条件以获取日期 < %Y-%n
- html - 在 Bootstrap 中格式化定价卡
- python - 过滤数据框
- pharo - Windows 中的 Iceberg/Pharo8 有什么问题?