swiftui - 如何在 IOS14 中使用多个 fullScreenCover
问题描述
我想从一个视图中以全屏模式呈现两个目的地视图。下面是我的代码示例。似乎该功能仅适用于单个演示文稿,如果我定义了第二个 fullScreenCover,则第一个 fullScreenCover 无法正常工作。此时有什么解决方法吗?
import SwiftUI
struct TesFullScreen: View {
init(game : Int){
print(game)
}
var body: some View {
Text("Full Screen")
}
}
内容视图
import SwiftUI
struct ContentView: View {
@State var showFullScreen1 : Bool = false
@State var showFullScreen2 : Bool = false
var body: some View {
NavigationView {
VStack {
Spacer()
Button(action: { self.showFullScreen1 = true }) {
Text("Show Full Screen 1")
}
Button(action: { self.showFullScreen2 = true }) {
Text("Show Full Screen 2")
}
Spacer()
}
.navigationBarTitle("TextBugs", displayMode: .inline)
}
.fullScreenCover(isPresented: self.$showFullScreen1){
TesFullScreen(game: 1)
}
.fullScreenCover(isPresented: self.$showFullScreen2){
TesFullScreen(game: 2)
}
}
}
解决方案
并非总是被接受的答案有效(例如,如果您有一个带有子视图(以前的单元格)的 ScrollView,其中包含设置导航标志的按钮)。
但我发现,您也可以将fullScreen-modifier添加到 EmptyView。这段代码对我有用:
// IMPORTANT: Has to be within a container (e.g. VStack, HStack, ZStack, ...)
if myNavigation.flag1 || myNavigation.flag2 {
EmptyView().fullScreenCover(isPresented: $myNavigation.flag1)
{ MailComposer() }
EmptyView().fullScreenCover(isPresented: $myNavigation.flag2)
{ RatingStore() }
}
推荐阅读
- java - Java 声音采样器未完成获取缓冲区
- javascript - 为什么反应调用api这么多次加载页面?
- memory-management - 为什么 MIPS 使用 2 个指针来引用程序参数有什么理由吗?
- python - 调用变量是否比调用另一个函数参数中的函数更昂贵?
- python - 如何从列表中删除多个数字字符串并将其作为可用整数垂直返回
- google-apps-script - 创建一个宏以将一系列单元格复制并粘贴到下一个可用的空白单元格中
- azure - 具有多个文件路径的 Azure Log Analytics 自定义日志。如何判断 Log Analytics 中的记录来自哪个文件?
- java - 带有构造函数注入的 Spring @Bean 配置
- flutter - 列表视图生成器颤振
- sqlite - EntityFrameworkCore.Sqlite 是否可嵌入到独立的单文件应用程序中?