我已经介绍了一个模式视图,但是我希望用户先经历一些步骤才能将其关闭。当前可以拖动视图以将其关闭。
有没有办法阻止这种可能性?
我已经看过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)
我目前有一些文本和一个按钮,以后会使用它来关闭视图。
paw*_*222 27
从 iOS 15 开始我们可以使用interactiveDismissDisabled:
func interactiveDismissDisabled(_ isDisabled: Bool = true) -> some View
Run Code Online (Sandbox Code Playgroud)
我们只需要将它附加到纸张上即可。这是文档中的示例:
struct PresentingView: View {
@Binding var showTerms: Bool
var body: some View {
AppContents()
.sheet(isPresented: $showTerms) {
Sheet()
}
}
}
struct Sheet: View {
@State private var acceptedTerms = false
var body: some View {
Form {
Button("Accept Terms") {
acceptedTerms = true
}
}
.interactiveDismissDisabled(!acceptedTerms)
}
}
Run Code Online (Sandbox Code Playgroud)
sam*_*ize 10
如果您使用 3rd party lib Introspect,这很容易,它非常有用,因为它可以轻松访问相应的 UIKit 组件。在这种情况下,属性UIViewController:
VStack { ... }
.introspectViewController {
$0.isModalInPresentation = true
}
Run Code Online (Sandbox Code Playgroud)
小智 0
我在这里有一个类似的问题
struct Start : View {
let destinationView = SetUp()
.navigationBarItem(title: Text("Set Up View"), titleDisplayMode: .automatic, hidesBackButton: true)
var body: some View {
NavigationView {
NavigationButton(destination: destinationView) {
Text("Set Up")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里最主要的是它隐藏了后退按钮。这会关闭后退按钮,并使用户无法刷回以太币。
对于应用程序的设置部分,您可以创建一个新的 SwiftUI 文件并添加类似的内容以回家,同时还可以合并您自己的设置代码。
struct SetUp : View {
let destinationView = Text("Your App Here")
.navigationBarItem(title: Text("Your all set up!"), titleDisplayMode: .automatic, hidesBackButton: true)
var body: some View {
NavigationView {
NavigationButton(destination: destinationView) {
Text("Done")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
949 次 |
| 最近记录: |