Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top