如果UIViewController没有访问权限,我似乎无法获得最高分UINavigationController.这是我到目前为止:
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(vc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
但是,它似乎没有做任何事情.在keyWindow和rootViewController似乎是非零值太多,所以可选的链接不应该是一个问题.
注意: 做这样的事情是个坏主意.它打破了MVC模式.
我正在将Core Data和Cloud Kit一起使用,因此必须在应用程序启动期间检查iCloud用户状态。如果出现问题,我想向用户发出一个对话框UIApplication.shared.keyWindow?.rootViewController?.present(...),直到现在我还是这样做。
在Xcode 11 beta 4中,现在有一条新的弃用消息,告诉我:
iOS 13.0中已弃用“ keyWindow”:不应将其用于支持多个场景的应用程序,因为它会返回所有已连接场景的关键窗口
我该如何显示对话框?
我已经介绍了一个模式视图,但是我希望用户先经历一些步骤才能将其关闭。当前可以拖动视图以将其关闭。
有没有办法阻止这种可能性?
我已经看过WWDC会议的视频,他们提到了它,但是我似乎没能确切地知道我需要的代码。
struct OnboardingView2 : View {
@Binding
var dismissFlag: Bool
var body: some View {
VStack {
Text("Onboarding here! ")
Button(action: {
self.dismissFlag.toggle()
}) {
Text("Dismiss")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我目前有一些文本和一个按钮,以后会使用它来关闭视图。
我正在创建一个应用程序,其中登录/注册部分位于模式内部,如果用户未登录,则会显示该模式。
问题是,用户可以通过向下滑动模式来消除该模式...
有可能防止这种情况吗?
var body: some View {
TabView(selection: $selection) {
App()
}.sheet(isPresented: self.$showSheet) { // This needs to be non-dismissible
LoginRegister()
}
}
Run Code Online (Sandbox Code Playgroud)
第二个例子:
我正在使用一种模式来询问信息。除非通过使用“保存”按钮关闭模态,否则用户不能退出该过程。用户必须在按钮起作用之前输入信息。不幸的是,该模式可以通过向下滑动来消除。
有可能防止这种情况吗?
我有一个按钮,当我点击它时,一个新的视图将显示为一个工作表。在 SwiftUI 中,默认情况下向下滑动手势将关闭工作表视图。我想限制它。
我会有一个解雇按钮。在我按下那个按钮表之前,不应被解雇。