Обновление UILabel из другого класса - PullRequest
0 голосов
/ 10 сентября 2009

Я довольно новичок в разработке для iPhone, и я все еще разбираюсь в Objective-C, поэтому, пожалуйста, потерпите меня:)

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

Для тех из вас, кто знаком с классом AQRecorder из примера SpeakHere в Справочной библиотеке iPhone : -

Я пытаюсь обновлять метку каждый раз, когда вызывается AQRecorder::MyInputBufferHandler (т.е. когда заполнены входные буферы)

Мой первый подход состоял в том, чтобы изменить класс AQRecorder так, чтобы он содержал UILabel*, который я посылаю в качестве параметра модифицированному конструктору. Это сработало, но это было очень неправильно. И теперь, когда я хочу изменить пару различных компонентов пользовательского интерфейса, я надеялся, что есть лучший способ.

У меня такое ощущение, что мне не хватает чего-то простого. Это или я собираюсь потребовать немного рефакторинга.

Ответы [ 2 ]

2 голосов
/ 10 сентября 2009

Помимо уведомлений (как предложено Кристофером), которые очень удобны, если у вас есть "глобальные" уведомления с возможно несколькими наблюдателями, классический подход, который приходит на ум, - это делегирование.

В вашем случае класс, который обрабатывает событие (AQRecorder?), Может определять протокол делегата и иметь свойство делегата, в то время как класс, владеющий UILabel (ваш контроллер основного представления?), Может реализовывать этот протокол и обновите метку в реализации протокола (или сделайте все, что нужно сделать).

1 голос
/ 10 сентября 2009

Изучите использование NSNotificationCenter. Он предоставляет разъединенные уведомления, поэтому классу рекордера не нужно ничего знать о пользовательском интерфейсе.

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