如何在 IOS14 的 .fullScreenCover 下使用参数初始化内容
Posted
技术标签:
【中文标题】如何在 IOS14 的 .fullScreenCover 下使用参数初始化内容【英文标题】:How can I init a content with a parameter under .fullScreenCover in IOS14 【发布时间】:2020-09-21 08:55:40 【问题描述】:.fullScreenCover(isPresented: , 内容: View#>)
我需要使用参数初始化视图并将其传递给.fullScreenCover,我可以使用TesFullScreen.init 毫无问题地执行此操作,但是如果我使用参数初始化视图会出错,这是示例代码。希望有人可以提供帮助。谢谢
无参数工作
.fullScreenCover(isPresented: self.$showFullScreen, content: TesFullScreen.init)
但是参数不起作用
.fullScreenCover(isPresented: self.$showFullScreen, content: TesFullScreen(closeFlag: self.$showFullScreen, game: 1))
内容视图
import SwiftUI
struct ContentView: View
var game : Int = 1
@State var showFullScreen : Bool = false
var body: some View
NavigationView
VStack
Spacer()
Button(action: self.showFullScreen = true )
Text("Show Full Screen")
Spacer()
.navigationBarTitle("TextBugs", displayMode: .inline)
.fullScreenCover(isPresented: self.$showFullScreen, content: TesFullScreen.init)
// .fullScreenCover(isPresented: self.$showFullScreen, content: TesFullScreen(game: 1))
TesFullScreen
struct TesFullScreen: View
init(game : Int)
print(game)
init()
print("No parameter work")
var body: some View
Text("Full Screen")
完整编码: https://github.com/BellRinging/ForBugsFix.git
【问题讨论】:
你没有正确理解我 - 请创建一个 minimal 但 reproducible 示例 - 这样我就可以将粘贴复制到我的项目中,理想情况下由struct TesFullScreen: View
仅组成,并直接粘贴在问题中(不是作为指向 GitHub 的链接)。
ic..我减少了代码,你可以通过复制和解析来重现。我的 Xcode 版本是 12.0
【参考方案1】:
我终于明白了。需要这样改
.fullScreenCover(isPresented: self.$showFullScreen)
TesFullScreen(game: 1)
【讨论】:
以上是关于如何在 IOS14 的 .fullScreenCover 下使用参数初始化内容的主要内容,如果未能解决你的问题,请参考以下文章
如何调试在 iOS > 14 上打开的 Flutter 通知
如何使用 iOS 14+ 的 ScrollViewReader 和 iOS 13 的部署目标