2010-08-20 3 views
0

나는 이상한 행동을 가로 질러왔다 ... 내가 할 viewDidLoad 방법에서 클래스 A에서아이폰 -보기 초기화 문제

: B의 ​​뷰가 버튼까지 표시되지 않도록

b = [[B alloc] initWithNibName:@"B" bundle:nil]; //init the B class (declared as B* b) 
[b setText:@"ABCDDEEE"]; //change the text of a UITextView in b 

메모를 가 눌려 있습니다. 그러나 그것을 눌러서 b의보기로 이동하면 UITextView의 텍스트는 여전히 "lorem ipsun"텍스트입니다.

일단 b의보기가 한 번 표시되면 텍스트를 변경할 수 있습니다.

누구나이 문제와 해결 방법을 알고 있습니까?

+0

아마도 setText : 메소드가 아직 연결되지 않은 텍스트보기의 콘텐츠를 설정하려고합니까? – Eiko

답변

1

예상되는 동작입니다. initWithNibNameviewDidLoad이 호출되기 전에 완전한 초기화를 보장하지 않습니다.

+0

거기에 강제로 완전히로드 할 수있는 방법이 있습니까? – Daniel

+0

나는 그렇게 생각하지 않는다. '[b setText :]'를 호출하고 그 값을 컨트롤러의 멤버에 저장할 수 있습니다. 그런 다음 멤버의 뷰의'viewWillAppear'에서 멤버의 값을 설정하십시오. – tobiasbayer

1

NSString @property을 B에 만듭니다. b을로드 할 때이 속성을 설정하십시오. UITextView의 .text 속성은 아니지만보기 컨트롤러의 NSString 데이터 개체를로드하십시오. 그런 다음 B의 -(void)viewDidLoad에서 UITextView의 텍스트 속성을 설정 한 문자열로 설정합니다.

부모보기 컨트롤러가 처음으로 새보기 컨트롤러를 인스턴스화 할 때 NIB 요소가 반드시 존재하지 않아도되지만 데이터 필드와 대화 한 다음 해당 데이터를 -(void)viewDidLoad의보기 계층 구성원에로드 할 수 있습니다.

+0

정확히 구현 한 방법입니다. =) – Daniel