如何解决SwiftUI:工作表在呈现后立即被关闭
我想要一个全屏 SwiftUI 视图,导航栏中有一个按钮,它在上面显示 SwiftUI 表。
不幸的是,编译器说:“目前,只支持呈现一张纸。 当前显示的工作表被关闭时,将显示下一个工作表。"
这是我的代码:
struct ContentView: View {
var body: some View {
EmptyView().fullScreenCover(isPresented: .constant(true),content: {
FullScreenView.init()
})
}
}
struct FullScreenView: View{
var body: some View {
NavigationView{
MasterView()
}.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
struct MasterView: View {
@State private var showingSheet = false
var body: some View {
Form {
Section(header: Text("Header")) {
NavigationLink(destination: UIKitView()) { Text("hey") }
}
}
.navigationBarItems(trailing:
HStack {
// First Try: Use a Button
Button("Plus"){
showingSheet = true
}.sheet(isPresented: $showingSheet){
AddContentView()
}
// Second Try: Use NavigationLink
NavigationLink(
destination: AddContentView(),label: {
Image(systemName: "plus.square.fill")
})
})
}
}
问题
我想以全屏方式显示 SwiftUI 视图,所以我使用了 fullScreenCover(...)
。有了这第一个“工作表”,我就无法展示第二个工作表,即我的 AddContentView()
视图。有什么办法可以解决这个问题吗?我真的很想把这张表放在上面:(
感谢您的帮助!!
请随意询问其他代码或是否有歧义。 :)
解决方法
错误信息说无法同时显示工作表(不要重叠工作表),因此如果您想查看并再次查看另一个视图,则必须使用 NavigationLink 并且仅在最后。表()
.sheet(isPresented: $showingSheet){
AddContentView()
}
或 fullScreenCover()
.fullScreenCover(isPresented: $showingSheet){
AddContentView()
}
已编辑:此代码中工作表未重叠两次。
import SwiftUI
struct ContentView: View {
@State private var showingSheet = false
var body: some View {
NavigationView{
Form {
Section(header: Text("Header")) {
NavigationLink(destination: EmptyView()) { Text("Hey") }
}
}
.navigationBarItems(trailing:
HStack {
// First Try: Use a Button
Button("Plus"){
showingSheet = true
}.sheet(isPresented: $showingSheet){
EmptyView()
}
// Second Try: Use NavigationLink
NavigationLink(
destination: EmptyView(),label: {
Image(systemName: "plus.square.fill")
})
})
}.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
附言fullScreenCover() 属于工作表
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。