如何从 SwiftUI 中的操作内部访问按钮的 titleLabel?

Posted

技术标签:

【中文标题】如何从 SwiftUI 中的操作内部访问按钮的 titleLabel?【英文标题】:How to access a Button's titleLabel from inside it's action in SwiftUI? 【发布时间】:2020-05-26 16:43:55 【问题描述】:

非常简单,如果我声明一个按钮,例如:

Button("buttonLabel") 
    //How do I access the titleLabel.text, in this case "buttonLabel" inside the button's action?

旁注:如果我可以添加任何内容来将其上下文化,我可以,但我觉得必须有一些超级简单的方法来访问标签......

【问题讨论】:

【参考方案1】:

您可以通过将其声明为外部变量作为ContentView 的成员来访问它:

struct ContentView: View 
    let buttonLabel = "buttonLabel"

    var body: some View 
        Button(buttonLabel) 
            print("Pressed \(self.buttonLabel)")
        
    

如果您的要求是检查/修改按钮文本,那么这里是一个示例:

struct ContentView: View 
    @State var buttonLabel = "Tap me!"

    var body: some View 
        Button(buttonLabel) 
            self.buttonLabel = self.buttonLabel == "Tap me!" ? "I was tapped!" : "Tap me!"
        
    

【讨论】:

【参考方案2】:

如果您只想访问标签的值,可以将其设置为视图中的属性。如果您希望能够在您的操作中修改它,您需要使用 @State 包装器对其进行标记,如下所示。

struct YourView: View 
    @State var label = "Tap Me"

    var body: some View 
        Button(label) 
            self.label = "Tapped!"
        
    

【讨论】:

以上是关于如何从 SwiftUI 中的操作内部访问按钮的 titleLabel?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:从列表中的项目获取切换状态

带有 SceneKit 的 SwiftUI:如何使用视图中的按钮操作来操作底层场景

如何从 SwiftUI 中的函数返回按钮?

如何在 swiftui 中的按钮操作上在视图控制器之间导航?

如何将 swiftUI 按钮连接到 NSView 操作?

如何从 UI 测试用例类访问 SwiftUI 视图的属性?