Это сводит меня с ума. Функция updateTextView()
вызывается, проверяется операторами печати, но она не устанавливает метку в моем контроллере представления, а операторы печати для метки возвращают нуль, даже если она имеет значение по умолчанию, которое отображается, когда приложение загружен. Больше всего смущает то, что я установил тестовую кнопку для вызова этой функции по отдельности, и когда я вызываю ее с помощью test()
, метка обновляется правильно.Swift Text Label Nil Даже со значением по умолчанию
class GoalDetailViewController: UIViewController, TextDelegate {
@IBAction func test(sender: AnyObject) {
updateTextView()
}
func updateTextView() {
print(goalSummaryTextBox?.text)
print("delegate called")
self.goalSummaryTextBox?.text = GoalsData.summaryText
print(goalSummaryTextBox?.text)
}
@IBOutlet weak var goalTitle: UILabel?
@IBOutlet weak var goalCreationDate: UILabel?
@IBOutlet weak var goalSummaryTextBox: UITextView?
override func viewDidLoad() {
super.viewDidLoad()
goalSummaryTextBox?.text = GoalsData.summaryText
}
}
updateTextView()
вызывается через метод делегата после того, как я поп другой контроллер представления, как можно увидеть ниже:
class TextEditViewController: UIViewController {
var textDelegate: TextDelegate?
@IBOutlet weak var textView: UITextView?
func configureView() {
navigationItem.title = "Edit Description"
navigationItem.setRightBarButtonItem((UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: "segue")), animated: true)
}
func segue() {
textDelegate = GoalDetailViewController()
if let text = textView?.text {
GoalsData.summaryText = text
}
textDelegate?.updateTextView()
self.navigationController?.popViewControllerAnimated(true)
}
}
Это последнее предложение может быть проблема. – tktsubota
Можете ли вы уточнить? Я знаю, что он вызывает функцию из-за операторов печати. –
Можете ли вы опубликовать код, относящийся к разному контроллеру вида, который вылезает (и вызывает вызов 'updateTextView()')? Возможно, что 'updateTextView()' вызывается в фоновом порядке. Можете ли вы также добавить 'print (GoalsData.summaryText)' to 'updateTextView()' только для того, чтобы убедиться, что это действительно другое? – Mark