2011-03-16 27 views
1

我是新的mac dev,xcode和IB等。我明白如何構建簡單的應用程序和基本拖動IB在下降,但我不知道IB在什麼地方做對象。當我連接IBoutlets/IBActions時,IB在幕後做了什麼?

第二個問題是如何在不使用IB的情況下編寫MVC?

+0

嗨!我有2年使用iPhone應用程序的經驗。我們放棄使用接口構建器,因爲當你構建更大的解決方案時,它只會使事情複雜化。編寫代碼,你將完全控制;)你可以在這裏瞭解更多關於mvc的信息http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html – 2011-03-16 19:45:52

回答

0

據我所知,來自IB的XIB文件是某種存檔的對象及其屬性存儲在其中的某種存檔。當您發送-initWithNibName時,對象將被取消存檔。所以基本上,你可以 - 如果你知道如何 - 創建你自己的XIB文件,他們應該工作。請注意,加載UIViewController而不指定XIB文件,將加載與您的類同名的XIB文件。請參閱Wikipedia article

第二個問題:您可以創建任何使用IB以編程方式添加的對象。通常,這些是使用initWithFrame:初始化的UIView子類。然後你設置你需要的屬性。最後,使用addSubview將它們添加到您的視圖中。 IBActions基本上是Target/Action Pairs。如果您例如添加UIBarButtonItem,則使用initWithBarButtonSystemItem:target:action:。設置動作等同於在IB中設置IBAction連接。

您應該可以通過編程方式創建任何用戶界面,但與使用IB時相比,這通常需要很多工作。

2

當您使用IBOutletIBAction連接IB中的兩個對象時,它在XIB(即XML)中創建了一些特殊標記。

當束(更新:對不起,這不是一個包,但UINib)讀取NIB(這是編譯XIB),它看起來對這樣的標籤,他們是參考對象。之後:

  • 對於網點,它使用KVC(鍵值編碼)來設置接收對象的相應屬性。

  • 對於控制對象調用addTarget:action:forControlEvents:的操作。

您可以通過創建並在代碼中設置對象建立任何複雜的iPhone應用程序,而不IB,但在大多數情況下,它只是並不明智。

深入閱讀 - Resource Programming Guide