2011-06-19 47 views
1

我有一個名爲DebugViewController的UIViewController,它包含一個UITextView和一個名爲debugPrint的公共方法,它用於將NSString寫入UITextView並顯示它。在視圖加載之前使用視圖控制器方法的幫助

是否可以在打開UIViewController之前寫入UITextView,以便當我打開它時,先前寫入它的文本被顯示出來?

在我父視圖控制器viewDidLoad方法,我在DebugViewController調用initWithNibName如下

debugViewController = [[DebugViewController alloc] initWithNibName:@"DebugView" bundle:nil]; 

然後我打電話debugPrint如下

[debugViewController debugPrint:@"viewDidLoad"]; 

一段時間後,我撥打以下打開debugViewController

debugViewController.delegate = self; 
debugViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[self presentModalViewController:debugViewController animated:YES]; 

但是之前編寫的所有文本都丟失了。

請讓我知道如何在視圖控制器顯示給用戶之前使用視圖控制器方法。

感謝,

JustinP

+0

大概你的textview沒有被初始化,這是因爲從nib的清醒還沒有被調用.. – Daniel

+0

謝謝丹尼爾,是否有可能強制喚醒呼叫? – JustinP

回答

0

你在做什麼是有點不標準。這種危險與往常一樣,如果你真的沒有專家來掌握你正在做的事情,你很快就會發現自己陷入困境。

如果您想要在之前設置,則該視圖會顯示給用戶,那麼最好的方法是在viewWillAppear方法中執行此操作。把它放在那裏,而不是在viewDidLoad,因爲view可能會加載一次,但會出現很多次。放置位置取決於數據是否從外觀變爲外觀。

因此,如果您的數據非常靜態且不會更改,請使用viewDidLoad方法。

假設你會去的viewWillAppear選項,讓我們做的第一步由視圖控制器具有伊娃:

NSString *myText; 

集合初始化後:

debugViewController = [[DebugViewController alloc] initWithNibName:@"DebugView" bundle:nil]; 
debugViewController.myText = @"My text here"; 

然後,在debugViewControllerviewWillAppear方法:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    myTextView.text = myText; 
} 

該視圖從View Controller Programming Guide for iOS可以看出,控制器的生命週期非常複雜。所以我會說,除非你有充分的理由,否則最好不要偏離阻力最小的道路。有時候說最好的學習方式是通過實驗。

相關問題