swiftui 中的 UIButton(Sender: UIButton) 是什么?
What do we have as UIButton(Sender: UIButton) in swiftui?
在 UIKit 中,我通过代码捕获了按钮发送器(点击了哪个按钮)
let colorVC = UIColorPickerViewController()
colorVC.delegate = self
clickedButton = sender
present(colorVC, animated: true)
}
我想在 SwiftUI 中完成同样的事情。
其中 flagList.name 来自 struct,我想知道点击了哪个按钮,以便相应地调整标志名称。
``` Button(action: {
print("tapped")
}, label: {
List(flagList) { flagList in
HStack(spacing: 15){
Image(flagList.flagName)
.resizable()
.scaledToFit()
.clipShape(Circle())
.frame(width: 30, height: 30, alignment: .trailing)
Text(flagList.name)
.font(.system(size: 25, weight: .light, design: .default))
}
}
首先,我认为你的按钮位置不对。您可能需要一个按钮列表,而不是一个包含列表的按钮。
然后,您可以存储代表当前选定按钮的 属性:
@State var currentSelectedFlagName: String
请注意,我说的是代表,而不是商店。在 SwiftUI 中,您不应存储对单个视图(包括按钮)的引用。
然后您可以在点击时将 currentSelectedFlagName
设置为当前选择的旗帜名称。
struct ContentView: View {
...
/// represents current selected button
@State var currentSelectedFlagName: String
var body: some View {
List(flagList) { flagList in
Button(action: {
/// set the property
currentSelectedFlagName = flagList.flagName
print("tapped")
}) {
HStack(spacing: 15){
Image(flagList.flagName)
.resizable()
.scaledToFit()
.clipShape(Circle())
.frame(width: 30, height: 30, alignment: .trailing)
Text(flagList.name)
.font(.system(size: 25, weight: .light, design: .default))
}
}
}
}
}
在 UIKit 中,我通过代码捕获了按钮发送器(点击了哪个按钮)
let colorVC = UIColorPickerViewController()
colorVC.delegate = self
clickedButton = sender
present(colorVC, animated: true)
}
我想在 SwiftUI 中完成同样的事情。
其中 flagList.name 来自 struct,我想知道点击了哪个按钮,以便相应地调整标志名称。
``` Button(action: {
print("tapped")
}, label: {
List(flagList) { flagList in
HStack(spacing: 15){
Image(flagList.flagName)
.resizable()
.scaledToFit()
.clipShape(Circle())
.frame(width: 30, height: 30, alignment: .trailing)
Text(flagList.name)
.font(.system(size: 25, weight: .light, design: .default))
}
}
首先,我认为你的按钮位置不对。您可能需要一个按钮列表,而不是一个包含列表的按钮。
然后,您可以存储代表当前选定按钮的 属性:
@State var currentSelectedFlagName: String
请注意,我说的是代表,而不是商店。在 SwiftUI 中,您不应存储对单个视图(包括按钮)的引用。
然后您可以在点击时将 currentSelectedFlagName
设置为当前选择的旗帜名称。
struct ContentView: View {
...
/// represents current selected button
@State var currentSelectedFlagName: String
var body: some View {
List(flagList) { flagList in
Button(action: {
/// set the property
currentSelectedFlagName = flagList.flagName
print("tapped")
}) {
HStack(spacing: 15){
Image(flagList.flagName)
.resizable()
.scaledToFit()
.clipShape(Circle())
.frame(width: 30, height: 30, alignment: .trailing)
Text(flagList.name)
.font(.system(size: 25, weight: .light, design: .default))
}
}
}
}
}