Изменение текста Swift UILabel
Я пытаюсь изучить Apple Swift. Недавно я пытался создать графическое приложение, но у меня есть вопрос:
Как мне взаимодействовать с элементами графического интерфейса моего приложения? Например, я использовал построитель интерфейсов для создания UILabel, и я связал его с моим контроллером view, щелкнув его правой кнопкой мыши, чтобы получить информацию @IBOUTLET. Теперь, как я, в то время как в моем контроллере просмотра, отредактировал текст этой UILabel? Чтобы сформулировать это по-другому, какой код я могу использовать для программного управления текстом чего-то на моем раскадровке? Все методы, которые я нашел в Интернете, работают только с кнопкой, сгенерированной кодом, а не кнопкой, сгенерированной на раскадровке.
Я видел код вроде
self.simpleLabel.text = "message"
Если это правильно, как мне связать его с соответствующей меткой? Другими словами, как я могу адаптировать этот код к IBOutlet (если это то, что я делаю)
Ответы
Ответ 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"
}