【发布时间】:2021-05-31 14:58:15
【问题描述】:
在使用情节提要时,我们可以通过使用以编程方式单击按钮或字段
@IBOutlet weak var negativeButton: UIButton!
negativeButton.sendActions(for: .touchUpInside)
如何使用 SwiftUI 重新创建相同的内容?
【问题讨论】:
标签: swift xcode swiftui storyboard
在使用情节提要时,我们可以通过使用以编程方式单击按钮或字段
@IBOutlet weak var negativeButton: UIButton!
negativeButton.sendActions(for: .touchUpInside)
如何使用 SwiftUI 重新创建相同的内容?
【问题讨论】:
标签: swift xcode swiftui storyboard
您不能将 SwiftUI 按钮视为 UIKit 按钮。因为在 SwiftUI 视图(按钮)中没有你在情节提要中所做的对象/插座,所以它没有这样的功能。
相反,您可以创建函数并使用该函数来触发按钮操作,并且您可以在任何需要的地方调用该函数。
请参考以下示例以获得更清晰的理解。
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 中不可能做到这一点,SwiftUI 甚至不知道 Button 存在 “作为对象!但是作为渲染和它的职责存在”,为什么使用 Button 是它在 SwiftUI 中的功能,这意味着触发 Action 或 ()-> Void,所以 您也不需要 您不能以编程方式点击按钮,因为您可以随时随地运行它。
例如:你可以在你想要的地方运行actionOfButton(),以编程方式点击按钮,它的工作原理是一样的。如果您的 Button 会根据每次点击改变它的外观,那么您应该在 actionOfButton() 中进行更改,因此,话虽如此,您可以同时进行操作和渲染,这就是在 SwiftUI 中以编程方式点击 Button 的总结.
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")
})
}
}
【讨论】: