2013-03-05 57 views
2

我在學習Objective-C,遇到了一些對我來說沒有意義的東西。在Storyboard中繪製視圖控制器(VC)時,可以通過在Storyboard ID中輸入一個字符串(單擊故事板中的VC,在實用工具側邊欄,標識檢查器選項卡,標識部分中)來通過代碼調用此VC )使用instantiateViewControllerWithIdentifier方法。通過instantiateViewControllerWithIdentifier將代碼與視圖控制器結合在視圖控制器中

在我的示例中,我在Storyboard中繪製了獨立的UIViewController,並將Storyboard ID設置爲「orderList」。在代碼中,我可以通過這個代碼中調用這個觀點,代碼1

UIViewController *ordersVC = [self.storyboard instantiateViewControllerWithIdentifier:@"orderList"]; 

如果我創建的UIViewController的一個子類,稱爲「SCVCOrders」,並插入一些代碼,它會修改它的外觀 - 比如設置標題或改變背景顏色我想我能夠使用此代碼代碼2的繪製VC與代碼SCVCOrders結合:

SCVCOrders *ordersVC = [self.storyboard instantiateViewControllerWithIdentifier:@"orderList"]; 

但它並不將它們結合起來。它只使用故事板中繪製的內容。接下來,在Storyboard中,我將繪製的VC的類設置爲SCVCOrders。現在Code2給了我看看,但Code1。我的結論是,Storyboard優先於實例化代碼。 Xcode並不在乎我編碼視圖的類是什麼,它只會看這個Storyboard。它是否正確?

我想象一下將我的代碼分層到我在Storyboard中繪製的內容上是有用的。用我的例子,我想把我畫的VC作爲泛型類。並使用Code2在繪製的VC之上分層編碼。或者我們還能如何實現這樣的目標?

+0

實際上,Code1和Code2之間沒有語義上的區別。 – Felix 2013-03-05 16:09:54

回答

2

instantiateViewControllerWithIdentifier將返回故事板中存儲的任何類。將此方法返回的類存儲在具有不同類類型的指針中並不會改變它實際是什麼類型的對象。

也就是說,如果你有一條魚並稱之爲老虎,它並不會改變它真的是一條魚的事實。

+0

感謝您的理解。 – guptron 2013-03-06 01:06:07

相關問題