2010-08-20 63 views
0

我所遇到的一個奇怪的行爲...iphone - 視圖初始化問題

在A類,在viewDidLoad方法我做的:

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的視圖不會顯示,直到一個按鈕被按下。但是,當我按下它並轉到b的視圖時,UITextView的文本仍然是「lorem ipsun」文本

一旦b的視圖顯示一次,我可以更改文本。

任何人都知道這個問題,以及如何解決?

+0

也許你的setText:方法試圖設置你的文本視圖的內容,尚未被連線? – Eiko 2010-08-20 10:26:13

回答

1

這是預期的行爲。在調用viewDidLoad之前,initWithNibName不保證完成初始化。

+0

有沒有辦法強制它完全加載? – Daniel 2010-08-20 10:47:30

+0

我不這麼認爲。 您可以調用'[b setText:]'並將該值存儲在控制器的成員中。然後從成員中設置視圖viewWillAppear中成員的值。 – tobiasbayer 2010-08-20 11:18:58

1

在B中創建NSString @property在加載b時設置該屬性 - 不是UITextView的.text屬性,而是視圖控制器中的NSString數據對象。然後在B的-(void)viewDidLoad中,使用您設置的字符串設置UITextView的文本屬性。

當父視圖控制器首次實例化一個新的視圖控制器時,NIB元素不一定存在,但您可以與數據字段進行交談,然後將該數據加載到-(void)viewDidLoad中的視圖層次結構成員中。

+0

這正是我如何實現它=) – Daniel 2010-08-20 13:54:01