TabView Swift UI中的NavigationView
我在长时间休息后刚刚拿起SwiftUI,但我不明白为什么我不能在TabView Swift UI中的NavigationView,swift,swiftui,swift5,navigationview,tabview,Swift,Swiftui,Swift5,Navigationview,Tabview,我在长时间休息后刚刚拿起SwiftUI,但我不明白为什么我不能在选项卡视图中放置导航视图 我希望我的导航视图是一个.tabItem,因此该视图显示为主应用程序导航的一部分,因此我尝试以下操作: struct ContentView: View { var body: some View { TabView { NavigationView { .tabItem {
选项卡视图中放置导航视图
我希望我的导航视图
是一个.tabItem
,因此该视图显示为主应用程序导航的一部分,因此我尝试以下操作:
struct ContentView: View {
var body: some View {
TabView {
NavigationView {
.tabItem {
Text("Home")
}
Text("Tab bar test")
.navigationBarTitle("Page One")
}
}
这不适用于错误消息
Cannot infer contextual base in reference to member 'tabItem'
但是当我尝试这个的时候
var body: some View {
TabView {
NavigationView {
Text("Tab bar test")
.navigationBarTitle("Page One")
}
}
.tabItem {
Image(systemName: "1.circle")
Text("Home")
}
}
它构建得很好,但选项卡栏不显示
我希望对其他人有用的主要问题是
为什么我不能将导航视图
直接嵌套在导航视图
中的.tabItem
来创建选项卡栏项目(根据我的第一个示例)
我认为这是一个类似于的问题,但没有代码。然后非常类似于,但他们似乎在使用.tabItem
directy和ContentView
,就像我想使用NavigationView
一样,但这不是构建
我可能误解了一些简单的东西,但我现在一点也不明白。.tabItem
应该用作表示该选项卡的视图上的修饰符
在第一个示例中,由于语法错误,这不起作用--您试图在NavigationView{
中打开闭包时使用它,而希望它位于右大括号的外侧:NavigationView{}.tabItem(…)
在第二个示例中,您使用.tabItem
作为整个选项卡视图
的修饰符,而不是导航视图
如果您缩进代码以便查看层次结构,您的两个示例可能会更清楚地揭示出发生了什么。请尝试在Xcode中选择代码,并使用Ctrl-I使Xcode为您正确格式化
以下是一个工作版本:
struct ContentView : View {
var body: some View {
TabView {
NavigationView {
Text("Tab bar test")
.navigationBarTitle("Page One")
}
.tabItem { //note how this is modifying `NavigationView`
Image(systemName: "1.circle")
Text("Home")
}
}
}
}
非常感谢-好的,我现在明白了,我很清楚。我们的意思是,通过在NavigationView的右括号后添加.tabItem,它是NavigationView的修改器?感谢Xcode格式提示,很抱歉我以后会这么做!很抱歉,您在代码示例中实际注意到了这一点-再次感谢是的,这是正确的。相同的假设您正在编辑一个没有尾随闭包的视图,例如Text(“Hello,world!”)。foregroundColor(.red)
修改器位于正在修改的视图之后的位置。