2011-01-22 3 views
10

appDelegate에서 인스턴스화되고 탐색 컨트롤러에 푸시 된 뷰 컨트롤러가 있습니다. 보기 제어기의보기는 xib 파일로 작성됩니다. xib 파일은 UILabel을 뷰에 배치합니다 (다른 것들 중에서). 이제 프로그래밍 방식으로 레이블의 텍스트 속성을 설정해야하지만이 형식에 대한 참조를 얻는 방법을 알지 못합니다. 레이블 객체는 어떻게 참조합니까?iOS에서 xib 파일로 만든보기에서 개체를 어떻게 참조합니까?

저는 xcode 3.2.5를 사용하고 iPad 앱을 만들고 있습니다.

답변

27

IBOutlets 이외에도 IB의 레이블에 태그 속성을 설정할 수도 있습니다. 그런 다음 필요할 때 다음을 수행 할 수 있습니다.

UILabel *label = (UILabel *)[self.view viewWithTag:111]; 

물론 IB의 라벨에 지정한 태그입니다.

+1

좋습니다. 나는 태그를 사용하는 방법을 알지 못했고 이제는 알았다. 고마워요! – RobertL

+0

위에 제공된 코드를 테스트 했습니까? Apple의 설명서에 따르면 viewWithTag는 UIView를 반환합니다. 그 외에는 "태그가 지정된 값과 일치하는보기를 반환합니다." 2016-03-13 17 : 28 : 40.961 LumaCoreData [5211 : 1212054] - [UIView value] : 인스턴스로 전송 된 인식 할 수없는 선택기 0x14d6dbc00 2016-03- 13 : 17 : 28 : 40.962 LumaCoreData [5211 : 1212054] *** 캐치되지 않은 예외 'NSInvalidArgumentException'으로 인해 응용 프로그램을 종료 함, 이유 : '- [UIView value] : 인스턴스 0x14d6dbc00으로 보낸 인식 할 수없는 선택기' –

9

"콘센트"라고하는이 작업을 수행합니다. 컨트롤러에 정의하고 명확하게 IBOutlet으로 표시 한 다음 인터페이스 빌더에서 파일 소유자 (또는 IB에서 만든 다른 위임 객체)에 연결합니다.

@interface FooController() 
@property (nonatomic, weak) IBOutlet UILabel* fooLabel; 
@end 

그런 다음 당신은 당신의 레이블을 선택 것이며, 파일 소유자로 그것에서 제어 드래그하거나, 또는 연결 탭으로 이동, 드래그에서 :

예를 들어, 당신의 FooController.m이있을 수 있습니다 참조 콘센트에있는 +을 파일 소유자에게 보내고 fooLabel을 선택하십시오.

업데이트 :이 사례를 다루는 현대적인 방법을 반영하여 코드 샘플이 변경되었습니다.

+0

이것은 좋은 도움이되는 답변입니다. 고맙습니다. 나는 그것에게 녹색 수표를 줄 것이다. 그러나 명백하게 나는 그들이 좋은 것이고 나는 벌써 또 다른 하나를 점검했지만 두 개의 다른 대답에 수표를 줄 수 없다. – RobertL

0

[self.view viewWithTag:NUMBER_OF_TAG]; 트릭을 수행합니다. 그러나보기에 액세스하려면 viewWillAppear 또는 viewDidAppear 이벤트에서 수행해야합니다.

관련 문제