Как получить доступ к метке titleLabel кнопки из ее действия в SwiftUI? - PullRequest
0 голосов
/ 26 мая 2020

Очень просто, если я объявляю кнопку вроде:

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

Боковое примечание: если я могу добавить что-нибудь, чтобы контекстуализировать это, я могу, но я чувствую, что должен быть какой-то супер простой способ доступ к этикетке ...

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Вы можете получить к нему доступ, объявив его как переменную вне тела как член 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!"
        }
    }
}
0 голосов
/ 26 мая 2020

Если вы просто хотите получить доступ к значению метки, вы можете установить его как свойство в вашем представлении. Если вы хотите иметь возможность изменять его из своего действия, вам необходимо пометить его оберткой @State, как показано ниже.

struct YourView: View {
    @State let label = "Tap Me"

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