如何从 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?的主要内容,如果未能解决你的问题,请参考以下文章
带有 SceneKit 的 SwiftUI:如何使用视图中的按钮操作来操作底层场景