首页 > 解决方案 > 如何禁用 SwiftUI 的默认行为?

问题描述

SwiftUI 使构建声明式 UI 变得非常容易。然而,有时他们假设默认值不一定是我们想要的。

例子:

在列表行中添加两个按钮时,SwiftUI 会自动使整行可触摸,并且两个按钮的操作都会在行点击时调用。这是默认行为,如他们的 WWDC 视频中所示。

但我不想要这种行为。我希望两个按钮都能正常工作,并且该行不可点击。

问题:

我们如何告诉我们的鳄梨酱专家(使用 WWDC 参考)停止假设我希望我的列表(或任何其他行为)如何工作?

任何帮助,将不胜感激。

标签: iosswiftui

解决方案


如果List不需要 的默认行为,您可以使用VStack

struct ContentView: View {
    var body: some View {
        VStack {
            Button(action: {
                print("foo")
            }) {
                Image(systemName: "photo")
            }
            Button(action: {
                print("bar")
            }) {
                Image(systemName: "photo")
            }
        }
    }
}

但是,如果List确实需要,则可以通过编写自定义ListStyle 对其进行自定义。

(也看看这个问题:How to change ListStyle in List。)

这似乎SomethingStyle protocol是 Apple 希望开发人员用来修改原生 SwiftUI 元素/行为的方式。另一个例子是ButtonStyleTextFieldStyle等。


推荐阅读