在Xcode beta 4中,使用PresentationLink会给出以下警告:“不推荐使用'PresentationLink':请改用.sheet修饰符。”
我假设它们的意思是某种形式的
func sheet<Content>(isPresented: Binding<Bool>, onDismiss: (() -> Void)? = nil, content: @escaping () -> Content) -> some View where Content : View
Run Code Online (Sandbox Code Playgroud)
但我不确定如何切换到此模式-特别是,这种isPresented说法使我感到困惑。我知道有一个名为isPresented的Environment变量,但是对于当前View来说,这不是吗,不是要呈现的View吗?
我对此最感兴趣,因为我希望这能解决PresentationLinks仅工作一次的问题(请参阅swiftUI PresentaionLink第二次不工作)
现在不赞成使用PresentationLink的人可以提供一个简单的示例来显示视图吗?例如,将以下内容转换为使用.sheet修饰符:
NavigationView {
List {
PresentationLink(destination: Text("Destination View")) {
Text("Source View")
}
}
}
Run Code Online (Sandbox Code Playgroud) PresentationButton可以正确显示视图,但是在单击“取消”以返回到父视图时,该按钮拒绝再次显示子视图。
这是我的PresentationButton代码:
struct ContentView : View {
var body: some View {
ZStack {
PresentationButton(Text("Click to show"), destination: SomeOtherView())
.transition(.slide)
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将工作表表示工作嵌套在ScrollView.
如果没有ScrollView修饰符.sheet,效果很好,但是当我将所有内容包装在滚动视图内时,修饰符只会触发一次。因此,第一次点击时,工作表看起来很好,但在关闭它后,我无法再次触发它。我不确定这本身是否是一个错误SwiftUI,或者我是否在这里做了什么。
注意:如果我将.sheet修饰符添加到其ScrollView本身,则一切正常。但对于我的用例,.sheet修饰符被添加到深深嵌套在ScrollView.
我正在使用 Xcode Beta 5
没有 ScrollView - 有效
struct SheetWorks: View {
@State var showSheet = false
var strings = [
"Hello", "World", "!"
]
var body: some View {
HStack {
ForEach(strings) { string in
Button(action: {self.showSheet.toggle()}) {
Text(string)
}
.sheet(isPresented: self.$showSheet) {
Text("Here is the sheet")
}
}
}
.padding()
}
}
Run Code Online (Sandbox Code Playgroud)
使用 ScrollView - 不起作用
struct SheetDoesntWork: …Run Code Online (Sandbox Code Playgroud) 我开始尝试在WWDC 2019上宣布的新SwiftUI框架,并在https://developer.apple.com/tutorials/swiftui上开始了该教程。
现在,我谈到了通过来将Profile连接到HomeScreen的地步PresentationButton。更确切地说,我在谈论以下代码部分Home.swift:
.navigationBarItems(trailing:
PresentationButton(
Image(systemName: "person.crop.circle")
.imageScale(.large)
.accessibility(label: Text("User Profile"))
.padding(),
destination: ProfileHost()
)
)
Run Code Online (Sandbox Code Playgroud)
当我第一次单击该按钮时,“配置文件”看起来很好,但是当我关闭它,然后再次单击该按钮时,什么也没有发生。
有人知道为什么会这样吗?
提前致谢