ios - 使用 SwiftUI 呈现多个模式表

标签 ios swift iphone swiftui

我正在尝试使用 .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/

相关文章:

ios - 如何将 NSArray 转换为整数值

ios - 检查 FaceID 是否正确?

iphone - fmdb 在运行更新查询时锁定应用程序

swift - 如何在不中断主线程的情况下快速延迟 for 循环?

iphone - 如何将 UIWebView 内容调整为特定尺寸?

ios - Swift4 - 如何应用异步函数数组的每个元素

ios - 如何移动到 pageViewController 中的特定页面?

ios - 更新了 Parse SDK,获取 "' init( PFFile 为 )' is unavailable"

Swift - 以编程方式创建 View

swift - 可选的可变力展开,我还没有看到解决方案