如何在Swift UI中使带有按钮的列表项行不可单击?

时间:2020-05-15 07:16:32

标签: swiftui

有没有一种方法可以使列表的整个行都不可单击?

我正在尝试使其仅在按钮行上可单击。

enter image description here

如您所见,如果我尝试单击按钮行中的任何位置,无论是按钮本身还是周围的空白,都将其视为水龙头:

enter image description here

有没有一种方法可以使您只能单击按钮本身,而不能单击按钮周围的空白? (即行本身)

这是代码:

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            List {
                NavigationLink(destination: Text("Next screen")) {
                    Text("Item")
            }
            Button(action: {}) {
                Text("Button")
            }
            .padding(.vertical, 12)
            .frame(maxWidth: .infinity)
            .background(Color(UIColor.secondarySystemBackground))
            }
        }
    }
}

是的,在此实现中,我绝对必须将这些元素放在List中,因此我实际上没有其他选择(例如,通常使用VStack

1 个答案:

答案 0 :(得分:3)

将其设置为非默认按钮样式,例如“普通”或您的自定义

Button(action: {}) {
    Text("Button")
       .frame(maxWidth: .infinity, maxHeight: .infinity)
       .contentShape(Rectangle())
}
.buttonStyle(PlainButtonStyle())  // << here !!

另请参见this帖子,例如使用自定义按钮样式执行类似操作