Spadict,這裏有一些錯誤。首先,我關心比大多數人都少的挑剔,但它有助於讓語言正確。真的是這樣。讓我們慢慢來吧..
如果你有一個類'ControlsViewController'(注意大寫C),你可以隨時使用它。你可以實例化儘可能多實例只要你喜歡,只要你喜歡。閱讀UIViewController的文檔(我在這裏假設ControlsViewController是一個你寫的類,它是UIViewController的一個子類)告訴我們指定的初始化器是-initWithNibName:bundle:。這意味着我們通常會像這樣使用它: -
ControlsViewController *controls = [[ControlsViewController alloc] initWithNibName:@"aNib" bundle:nil];
另一種創建類實例的方法是使用Interface Builder。在界面生成器中,您可以創建任意多個您喜歡的類的實例,調整它們的屬性,然後按原樣將它們保存爲一個nib文件。這是創建GUI實例,窗口,按鈕,視圖等的好方法,因爲您可以通過視覺操作位置和大小,並且可以通過拖放操作將按鈕添加到視圖或視圖中,這比編碼更容易。
.nib文件與.zip文件相當。我們並不關心.nib文件 - 我們關心我們存檔在其中的對象的實例。我們不是unarchiving .nib文件,我們將我們用Interface Builder創建的對象解除存檔,然後將其存檔爲nib文件。
每次我們加載筆尖文件我們會重新創建裏面的對象,就像我們保存筆尖時一樣。作爲一個例子: - 在界面生成器中,我創建一個窗口,並將背景顏色設置爲黑色,寬度爲600px。我把它保存到一個筆尖(在這個筆尖中有一個窗口對象 - 但是對於多少個對象或什麼類型沒有限制)。
當我運行應用程序我加載.nib 5次。我現在有5個寬度爲600px的黑色背景的Windows。
UIViewController的指定初始化程序將第一個參數作爲筆尖的名稱。當我們創建一個UIViewController的實例時,它會調用'-loadView'來加載我們傳入的nib,並將其中的對象解除歸檔。你永遠不需要調用'-loadview',並且使用一個筆尖不能替代這種方法。
因此,一個視圖可以通過編程方式創建,或者使用Interface Builder創建,然後從nib中加載。這些「都不涉及以編程方式繪製視圖」。一旦你有了一個觀點,你可以讓它畫出來,你可以每秒做50次,或者你可以做一次,但這是一個單獨的操作。
我對這種居高臨下的態度並不熱衷,但我的確把你的駱駝套的建議放在心上,它顯着提高了我的編碼的清晰度。 幾個月後,我記得這一點,並已回到upvote你。乾杯。 – bitwit 2011-01-02 23:50:03