다른 클래스에서 Uilabel을 업데이트합니다
-
05-07-2019 - |
문제
나는 iPhone Development에 익숙하지 않고 여전히 Objective-C 주위에 내 머리를 얻고 있으므로 나와 함께하십시오 :)
메인 뷰 컨트롤러에 속하는 객체 내부에서 레이블의 텍스트를 변경하려고합니다. 음. 나는 그것이 제대로 들린다 고 생각한다.
친숙한 사람들을 위해 AQRecorder
수업 iPhone Reference 라이브러리의 SpeakHere 예: -
매번 레이블을 업데이트하려고합니다 AQRecorder::MyInputBufferHandler
(즉, 입력 버퍼가 채워 졌을 때)
나의 첫 번째 접근법은 그것을 수정하는 것이었다 AQRecorder
a를 포함하는 클래스 UILabel*
수정 된 생성자에게 매개 변수로 보냅니다. 효과가 있었지만 매우 잘못된 느낌이 들었습니다. 그리고 이제 몇 가지 다른 UI 구성 요소를 수정하고 싶습니다. 더 나은 방법이 있기를 바랍니다.
기본적인 것을 놓친 느낌이 들었습니다. 또는 나는 약간의 리팩토링이 필요합니다.
해결책
사용을 살펴보십시오 NSNotificationCenter
. 분리 된 알림을 제공하므로 레코더 클래스는 UI에 대해 아무것도 알 필요가 없습니다.
다른 팁
알림 (Kristopher가 제안한대로) 외에도 여러 관찰자가있는 "글로벌"알림이있는 경우 매우 편리합니다.
귀하의 경우 이벤트를 처리하는 수업 (AQRecorder
?)는 대의원 프로토콜을 정의하고 대의원을 가질 수 있으며, 클래스는 UILabel
(메인 뷰 컨트롤러?)는이 프로토콜을 구현하고 프로토콜 구현에서 레이블을 업데이트 할 수 있습니다 (또는 다른 작업을 수행해야 함).