iOS, как узнать, изменил ли UILabel свой текст - PullRequest
2 голосов
/ 01 февраля 2012

Только что был вопрос относительно класса UILabel. Я знаю, что у элемента управления UITextField есть делегат, когда редактирование изменилось, но мне было интересно, имеет ли UILabel подобное поле. Причина, по которой я спрашиваю, состоит в том, что мое приложение запрашивает сеть, когда определенные части информации изменяются, и обновляет их соответствующим образом, и я не хочу жестко кодировать в своем обновлении имя метки, за которой я хочу следить, просто чтобы выполнить небольшую задачу относительно этого. Если у него есть делегат или что-то подобное, чтобы мой класс мог отслеживать эту информацию, это было бы здорово.

Если нет, то любой совет будет принят с благодарностью.

Ответы [ 2 ]

19 голосов
/ 01 февраля 2012

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

[somelabel addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:NULL];

и затем прослушайте изменения, подобные этому

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

    NSLog(@"the text changed");
}
1 голос
/ 01 февраля 2012

A UILabel не может изменить его текст без вашего кода, так почему же когда-нибудь будет делегат, который скажет вам, когда он будет изменен? Вы уже знаете ... UITextField есть такой, потому что пользователь может редактировать текст, чтобы вам сообщали, когда он изменился.

Так что, по сути, нет, метод делегата не существует, и вам даже не нужен.

...