iPad 上显示的模态视图上不需要的 SplitView
Unwanted SplitView on modal view displayed on iPad
在 iPad 上测试我的第一个 SwiftUI 应用程序时,我发现我从 ContentView 显示的模态视图在 iPad 上显示为拆分视图,UI 主端被截断,细节端为空。
我确实检查了这里的两个帖子:
并且,
What's the equality of the UISplitView controller
但是他们将 .navigationViewStyle(StackNavigationViewStyle)
应用于 NavigationView 的解决方案对我不起作用:
我使用以下方法通过用户输入(点击按钮)显示我的模式:
当一个按钮被按下时,一个 Int 值被传递给一个局部变量 (modalViewCaller
),然后传递给 sheetContent()
函数。
这是我的 var body: some View
和以下 sheetContent
func 的结尾:
} // END of main VStack
.sheet(isPresented: $isModalPresented, content: sheetContent)
} // END of body
// modalViewCaller is the Int var I set upon button tap
@ViewBuilder func sheetContent() -> some View {
if modalViewCaller == 1 {
firstModalView()
} else if modalViewCaller == 2 {
secondModalView()
} else if modalViewCaller == 3 {
thirdModalView()
}
} // END of func sheetContent
然后在每个模态视图中,我将 .navigationViewStyle(StackNavigationViewStyle)
修饰符应用于将我的整个视图封装在 var body: some View
中的 NavigationView,但出现以下错误:
"Type 'StackNavigationViewStyle.Type' cannot conform to 'NavigationViewStyle'; only struct/enum/class types can conform to protocols"
这是模态中我的 NavigationView 的结尾:
} // End of VStack
.navigationBarItems(
leading:
Button("Done") {
self.saveEdits()
self.presentationMode.wrappedValue.dismiss() // This dismisses the view
} // END of Button "Done"
)
.navigationBarTitle("Takeoff edition")
} // END of Navigation View
.navigationViewStyle(StackNavigationViewStyle)
.onAppear { // assigned fetched event date, here it is available (was not in init())
self.selectedDate = self.fetchedEvent.first?.eventDate ?? Date()
}
} // END of some View
我想发布的解决方案是从 ContentView NavigationView 应用该修改器,但我没有(并且不想要一个,因为我的屏幕上的所有空间都丢失了 UI)
这里是修复(必须构建,即StackNavigationViewStyle()
):
} // END of Navigation View
.navigationViewStyle(StackNavigationViewStyle()) // << here !!
在 iPad 上测试我的第一个 SwiftUI 应用程序时,我发现我从 ContentView 显示的模态视图在 iPad 上显示为拆分视图,UI 主端被截断,细节端为空。
我确实检查了这里的两个帖子:
但是他们将 .navigationViewStyle(StackNavigationViewStyle)
应用于 NavigationView 的解决方案对我不起作用:
我使用以下方法通过用户输入(点击按钮)显示我的模式:
当一个按钮被按下时,一个 Int 值被传递给一个局部变量 (modalViewCaller
),然后传递给 sheetContent()
函数。
这是我的 var body: some View
和以下 sheetContent
func 的结尾:
} // END of main VStack
.sheet(isPresented: $isModalPresented, content: sheetContent)
} // END of body
// modalViewCaller is the Int var I set upon button tap
@ViewBuilder func sheetContent() -> some View {
if modalViewCaller == 1 {
firstModalView()
} else if modalViewCaller == 2 {
secondModalView()
} else if modalViewCaller == 3 {
thirdModalView()
}
} // END of func sheetContent
然后在每个模态视图中,我将 .navigationViewStyle(StackNavigationViewStyle)
修饰符应用于将我的整个视图封装在 var body: some View
中的 NavigationView,但出现以下错误:
"Type 'StackNavigationViewStyle.Type' cannot conform to 'NavigationViewStyle'; only struct/enum/class types can conform to protocols"
这是模态中我的 NavigationView 的结尾:
} // End of VStack
.navigationBarItems(
leading:
Button("Done") {
self.saveEdits()
self.presentationMode.wrappedValue.dismiss() // This dismisses the view
} // END of Button "Done"
)
.navigationBarTitle("Takeoff edition")
} // END of Navigation View
.navigationViewStyle(StackNavigationViewStyle)
.onAppear { // assigned fetched event date, here it is available (was not in init())
self.selectedDate = self.fetchedEvent.first?.eventDate ?? Date()
}
} // END of some View
我想发布的解决方案是从 ContentView NavigationView 应用该修改器,但我没有(并且不想要一个,因为我的屏幕上的所有空间都丢失了 UI)
这里是修复(必须构建,即StackNavigationViewStyle()
):
} // END of Navigation View
.navigationViewStyle(StackNavigationViewStyle()) // << here !!