[英]How to click a button programmatically in SwiftUI
在使用 storyboard 时,我们可以通过使用以编程方式单击按钮或字段
@IBOutlet weak var negativeButton: UIButton!
negativeButton.sendActions(for: .touchUpInside)
如何使用 SwiftUI 重新创建相同的内容?
在 SwiftUI 中做同样的事情是不可能的,SwiftUI 甚至不知道按钮存在“作为对象!但是作为渲染并且它的职责存在” ,为什么使用按钮是它在Z5D807DF8E2D0F60FCC3ZB5037中的功能)-> Void ,所以你不需要也不能以编程方式点击按钮,因为你可以随时随地运行它的动作。
例如:您可以从您想要以编程方式点击按钮的位置运行actionOfButton()
,它的工作方式相同。 如果您的 Button 根据每次点击改变它的外观,您应该在actionOfButton()
中发生,因此,您可以同时进行操作和渲染,这就是在 SwiftUI 中以编程方式点击按钮的总结.
import SwiftUI
struct ContentView: View {
var body: some View {
Button("tap") {
actionOfButton()
}
}
func actionOfButton() {
print("Hello, world!")
}
}
可能的解决方案是在结构视图中声明动作变量,并且在需要时可以手动调用按钮动作。
这是演示。
struct ContentViewButtonAction: View {
var buttonAction: ()->Void {
{
print("Button tapped!!")
}
}
var body: some View {
Button(action: buttonAction, label: {
Text("Tap Button")
})
Button(action: {
print("Second button tapped")
buttonAction()
}, label: {
Text("Tap Button to execute first button action")
})
}
}
您不能将 SwiftUI 按钮视为 UIKit 按钮。 因为在 SwiftUI 中,视图(按钮)没有像在 storyboard 中那样的对象/插座,所以它没有这样的 function。
相反,您可以创建 function 并且可以使用该 function 来触发按钮操作,并且您可以从任何需要的地方调用该 function。
请参考以下示例以获得更清晰的理解。
struct ContentView: View {
var body: some View {
Button(action: {
buttonAction()
}, label: {
Text("Tap Here")
})
}
func buttonAction(){
//do write here your button action logic
print("button tapped")
}
}
要以编程方式测试 SwiftUI 按钮,您可以使用包含 sendTouchSequence function 的隐藏 _ViewTest 协议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.