[英]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.