У меня есть UIViewController
, и я рефакторинг его, и я столкнулся с ситуацией, когда мне нужно обновить его из другого класса. Я знаю, что мне нужно использовать delegate pattern, но мне сложно найти пример, который подходит для моей ситуации (что, по-моему, простое).Настройка текста надписи на UIViewController из класса, отличного от UIViewController
ItemViewController
имеет класс Timer
, который был создан. Я пытаюсь обновить ярлык ItemViewController
от класса Timer
.
На Timer
, я сделал следующее:
weak var delegate: TimerDelegate? // weak to avoid a retain cycle
func updateLabel(timeRemaining: Int) -> String {
return formatTimeInSeconds(timeRemaining) // another method w/in Timer
}
Я объявляю в нижней части Timer
класса
protocol TimerDelegate: class {
func updateLabel(timeString: String) -> String
}
На ItemViewController
я следующее свойство заявил:
@IBOutlet weak var timeValueLabel: UILabel?
I s и др это как делегат Timer
в viewDidLoad
следующим образом:
timer.delegate = self
То, что я пытаюсь сделать случиться, когда updateLabel
вызывается Timer
, я хотел бы обновить timeValueLabel.text
на ItemViewController
. Вот где я застрял ... что дальше?
Спасибо! Это привело меня к финишу :) – Adrian
Приветственный помощник, счастливое кодирование :) –