Подтвердить что ты не робот

Изменение текста Swift UILabel

Я пытаюсь изучить Apple Swift. Недавно я пытался создать графическое приложение, но у меня есть вопрос:

Как мне взаимодействовать с элементами графического интерфейса моего приложения? Например, я использовал построитель интерфейсов для создания UILabel, и я связал его с моим контроллером view, щелкнув его правой кнопкой мыши, чтобы получить информацию @IBOUTLET. Теперь, как я, в то время как в моем контроллере просмотра, отредактировал текст этой UILabel? Чтобы сформулировать это по-другому, какой код я могу использовать для программного управления текстом чего-то на моем раскадровке? Все методы, которые я нашел в Интернете, работают только с кнопкой, сгенерированной кодом, а не кнопкой, сгенерированной на раскадровке.

Я видел код вроде

self.simpleLabel.text = "message"

Если это правильно, как мне связать его с соответствующей меткой? Другими словами, как я могу адаптировать этот код к IBOutlet (если это то, что я делаю)

4b9b3361

Ответ 1

Если вы успешно связали элемент управления с IBOutlet в своем классе UIViewController, тогда свойство добавляется к нему, и вы просто замените simpleLabel на то, что вы назвали своим IBOutlet, чтобы быть таким:

class MyViewController: UIViewController {
    @IBOutlet weak var myLabel: UILabel!
    func someFunction() {
        self.myLabel.text = "text" 
    }
}

Ответ 2

Вы, возможно, создали название, которое вы создали. Выход входит в ваш контроллер. self.simpleLabel означает "получить значение моего свойства с именем" simpleLabel ".

Так как разные выходы имеют разные имена, использование self.simpleLabel здесь не будет работать, пока ваша розетка не будет названа "simpleLabel". Попробуйте заменить "simpleLabel" на имя, которое вы указали в розетке, когда вы его создали.

Правильный способ теперь:

self.yourLabelName.text = "message"

Ответ 3

Если у вас есть что-то подобное для IBOutlet:

@IBOutlet var someLabel: UILabel!

то вы можете установить свойство text так же, как в вашем примере:

someLabel.text = "Whatever text"

Если у вас возникли проблемы с этим, возможно, вы не назначаете свойство текста в нужном месте. Если он в функции, которая не вызывается, эта строка не будет выполняться, и свойство text не изменится. Попробуйте переопределить функцию viewDidLoad и поместите туда строку:

override func viewDidLoad() {
    super.viewDidLoad()
    someLabel.text = "Whatever text"
}

Затем, как только загрузится представление, вы установите свойство text. Если вы не уверены, выполняется ли строка кода или нет, вы всегда можете поставить там точку останова или добавить некоторый вывод. Что-то вроде

println("Checkpoint")

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

Надеюсь, что это поможет.

Ответ 4

Вы можете попытаться изменить компонент пользовательского интерфейса не в основном потоке, в этом случае сделайте следующее:

DispatchQueue.main.async {
        someLabel.text = "Whatever text"
}