SwiftUI使构建声明性UI变得非常容易。但是,有时他们会假定不一定是我们想要的默认值。
在列表行中添加两个按钮时,SwiftUI会自动使整个行变为可触摸状态,并且在点击行时都会调用这两个按钮的动作。这是他们的WWDC视频中演示的默认行为。
但是我不希望这种行为。我希望两个按钮都能正常工作,并且该行不可轻按。
我们如何告诉鳄梨酱专家(使用WWDC参考)停止假设我希望我的清单(或任何其他行为)如何工作?
任何帮助将不胜感激。
答案 0 :(得分:1)
如果不需要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元素/行为的方式。另一个示例是ButtonStyle或TextFieldStyle,等等。
答案 1 :(得分:1)
我的印象是Apple希望执行其样式准则。另外,要在@backslash -f答案中添加内容,您也可以只使用a而不是列表,这将给您类似的效果并允许更多的自定义。
Lines <- "name members
x1 A,B,N,K,Y,G
x2 J,L,M,N,T
x3 G,H,S,J,D,F
x4 J,K,H,F,H,D,L"
DF <- read.table(text = Lines, header = TRUE, as.is = TRUE)
另一种尝试的方法是将struct doubleList: View {
var body: some View {
VStack{
ForEach(1 ..< 10) {index in
Button(action: {
print("foo")
}) {
Image(systemName: "photo")
}
}
}
}
}
包裹到UITableView
中并尝试以这种方式启用按钮
似乎可以通过使用点击手势来解决此问题
UIViewRepresentable