首页 > 解决方案 > 在 TabView 中使用 NavigationView 时的警告日志,但在 iOS 14 中不起作用

问题描述

我有非常简单的代码,如下所示:

struct ContentView: View {
    var body: some View {
        TabView {
            FirstView()
        }
        .tabViewStyle(.page)
    }
}

struct FirstView: View {
    var body: some View {
        NavigationView {
            Text("Content")
                .navigationTitle("Title")
        }
    }
}

NavigationView在 a中使用时TabView,会出现奇怪的行为。在 iOS 15 中,我收到以下错误:

... [LayoutConstraints] 无法同时满足约束。
...
将尝试通过打破约束来恢复 <NSLayoutConstraint:0x6000010e5ae0 'BIB_Leading_Leading' H:|-(0)-[_UIModernBarButton:0x7fbd1d618dc0] (活动,名称:'|':_UIButtonBarButton:0x7fbd1d506d80 )>

在 iOS 14 中,我得到了相同的日志,但视图看起来也有问题:

结果不好

单击后退按钮“标题”后,我得到了日志:

... [Assert] 未知显示模式:自动

添加.navigationViewStyle(.stack)时,标题在前导侧没有空格,就像默认情况下一样:

更改样式时的结果

当使用这种风格和更复杂的内容时,比如下面的,视图会放在导航标题的后面并忽略它:

NavigationView {
    VStack {
        Text("Top")

        Spacer()

        Text("Bottom")
    }
    .navigationTitle("Title")
}
.navigationViewStyle(.stack)

使用 Spacer() 时的结果

如何为 iOS 14 解决此问题?我可以接受两者的日志,但是有什么解决方法(或如果可能的话是真正的解决方案)来解决这个问题?

标签: swiftswiftuiswiftui-navigationviewswiftui-tabview

解决方案


推荐阅读