2012-06-02 43 views
0

我爲n00b問題提前道歉。我剛開始w/iOS!何時創建視圖?

我想將webViewController推到導航控制器上。

mudWebViewController *webViewController = [[mudWebViewController alloc] initWithNibName:nil bundle:nil]; 
[[webViewController webView] setDelegate:webViewController]; 
[[self navigationController] pushViewController:webViewController animated:YES]; 

但這似乎不起作用,因爲我沒有看到委託消息中的任何日誌。

如果我在viewDidLoad:方法中設置委託,它工作正常。

我猜webView實際上並不存在,但爲什麼?如果我初始化控制器,不應該初始化webView嗎?

是viewDidLoad:設置這個東西的正確位置?

回答

1

initWithNibName應不爲零,因爲你明明使用的是榫文件構建視圖,否則你必須在代碼中創建視圖,你不這樣做

mudWebViewController *webViewController = [[mudWebViewController alloc] initWithNibName:@"webViewController" bundle:nil]; 
[[self navigationController] pushViewController:webViewController animated:YES]; 

而且任何代表應因爲對象可能尚未在代碼中初始化,所以無法正確設置委託,因此請從「接口」構建器或viewDidLoad委託中的視圖本身設置,而不是從之前的類設置。

+0

謝謝。完全忘了你可以在界面構建器中連接代理。另外,如果確實離開initWithNibName:nil它會查找與控制器同名的nib。明顯更安全,更明確,但仍然以這種方式工作。 – speg