我正在尝试使用 .sheet 演示文稿将多个模态视图附加到 NavigationView。
我尝试将 .sheet 链接在一起,只是发现当绑定(bind)变量更改时,只有最后一个可以被触发显示
有没有办法对多个模式执行此操作?
var body: some View {
NavigationView {
ZStack(alignment: .leading) {
MainView()
}
// present profile page
.sheet(isPresented: self.$presentation.profile){
ProfilePage()
}
// present product page
.sheet(isPresented: self.$presentProduct) {
SingleProductView()
}
//present login
.sheet(isPresented: self.$showLogin) {
LoginView(showLogin:self.$showLogin)
}
//present cart
.sheet(isPresented: self.$showCart) {
CartView()
}
// set title
.navigationBarTitle("Title", displayMode: .inline)
// set items
.navigationBarItems(leading: (
NavigationBarLeadingItems()
),trailing: (
NavigationBarTrailingItems()
)
)
最佳答案
在 SwiftUI 中的同一元素上多次调用同一方法将始终导致仅应用最后一个方法。
Text("Some Nice Text")
.forgroundColor(.red)
.forgroundColor(.blue)
这将始终导致文本显示为蓝色而不是红色,即使您将其颜色设置为红色也是如此。 .sheet 调用也是如此。最后一个 .sheet 调用将覆盖其前身。
有两种可能的解决方案:
您将 .sheet 调用放在不同的 View 上。
ViewOne().sheet(...) { ... }
ViewSecond().sheet(...) { ... }
您动态更改 .sheet 调用的内容:
View()
.sheet(...) {
if someState {
return SheetViewOne()
else {
return SheetViewSecond()
}
}
}
关于ios - 使用 SwiftUI 呈现多个模式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60671031/