首页 > 解决方案 > 点击 PresentationLink (SwiftUI) 时如何禁用闪烁?

问题描述

点击按钮时如何禁用突出显示的颜色?

现在,当我点击它时,它会变灰并调用该操作,但我想禁用它。目前有可能吗?

PresentationLink(destination: NextView()) {
   ....
}

标签: iosxcodeswiftui

解决方案


PresentationView似乎没有设置按钮样式的方法,我怀疑它永远不会。但是,还有其他方法可以呈现视图。下面你有一个可以避免这种影响的例子。它有点冗长,但它会满足您的目的。

从 beta3 开始,模态似乎有一个错误,并且永远不会调用 onDismiss 方法。所以很难正确重置 isPresented 变量。与此同时,我为此使用了一种解决方法。检查这个答案: https ://stackoverflow.com/a/56939555/7786555

struct ContentView : View {
    @State var isPresented = false

    var body: some View {

        VStack(spacing: 30) {
            // Option #1, with blink
            PresentationLink(destination: NextView(), label: {
                Text("Click to show")
            })

            // Option #2, without blink
            Text("Click to show").color(.blue).tapAction { self.isPresented = true }
                .presentation(isPresented ? Modal(NextView()) : nil)
        }

    }
}

struct NextView: View {
    var body: some View {
        Text("aloha!")
    }
}

推荐阅读