我正在组织我的代码,并且我制作了这个自定义按钮 View :
@State var buttonName = ""
@State var imageName = ""
Button(action: {
// Code that should be passed as a parameter to be run
}){
HStack(spacing: 15){
Image(systemName: imageName).resizable().frame(width:40, height: 40)
Text(buttonName)
Spacer(minLength: 15)
Image(systemName: "chevron.right")
}.padding()
.foregroundColor(Color.black.opacity(0.5))
}
通过此设置,我可以重复使用此 View :
buttonView(buttonName: "Logout", imageName: "person.fill")
但是我还想指定单击可重用按钮后应运行的代码,例如:
buttonView(buttonName: "Logout", imageName: "person.fill", action: {Logout()})
然后,这将进入自定义 View ,即用户在可重用按钮 View 主体中使用导航 View 单击时,按钮应该进入。
我该如何解决这个问题?我尝试过的状态:
@State var action = -> Void
最佳答案
这是用于此目的的演示 View
struct DemoView: View {
let action: () -> ()
var body: some View {
Button("Demo", action: action)
}
}
注意:不要将 @State
包装器用于公共(public) View 属性!
关于ios - SwiftUI 将 Swift 代码作为可重用 View 的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65480645/