Xib檔案使用(二)——關聯變數

來源:互聯網
上載者:User

xib檔案設計原則

1 始終用消極式載入設計nib檔案,只用當nib檔案中的這些對象馬上就要使用時,才載入nib檔案。

2 儲存重複的使用者介面組件(例如文件視窗)在單獨的nib檔案。

3 對於偶爾使用的視窗和菜單,存在一個單獨的nib檔案中,通過這樣的方式,將在正真用到它的時候,再將其資源載入到記憶體。

4 使 File’s Owner為nib檔案的單一外界出口。


xib檔案通常與ViewController一同使用,在建立ViewController的時候,可以一同建立與其關聯的Xib檔案,如


然後在RootViewController可以設定IBOutlet(開關變數)和IBAction,最後通過下面的代碼使用。

RootViewController * rvc;rvc= [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];


除了上述使用,還有另一種常見的使用:在定義複雜的TableViewCell時。如Apple文檔中的AdvancedTableViewCells(代碼傳送門)。

其RootViewController下有一個TableView的在RootViewController.Xib中,還有一個IndividualSubviewsBasedApplicationCell,如


然後通過這段代碼,將該Cell載入記憶體並使用

self.cellNib = [UINib nibWithNibName:@"IndividualSubviewsBasedApplicationCell" bundle:nil];[self.cellNib instantiateWithOwner:self options:nil];

這時候在RootViewController裡對應的IBOutlet變數tmpCell,便是一個我們設計內容的Cell。

在載入IndividualSubviewsBasedApplicationCell檔案時,我們使用了UINib,其實它才是真正載入nib檔案的類,第一種方法使用RootViewController初始化nib檔案時,只不過是RootViewController幫我們調用了UINib的方法。


這裡跟第一種方法不同的時,開關變數關聯的變數在

IndividualSubviewsBasedApplicationCell.h的檔案中,那麼IndividualSubviewsBasedApplicationCell.h不是Xib檔案的File‘s owner,怎麼也可以這樣關聯呢,關鍵在於


可以看到是TableViewCell的類型,已經改為IndividualSubviewsBasedApplicationCell,這樣便可以關聯Xib檔案中Cell上的內容,看會Xib檔案的源碼


我們接著看該項目的MainWindow.xib,發現檔案左側多了些內容


在iOS xib檔案中,支援放入對象容器,也就是說,可以將任意Objetive-C的對象放入xib檔案中,其由xib建立和銷毀(是一個autorelease對象)。在這個檔案裡,有兩個對象容器,分別放置了AdvancedTableViewCellsAppDelegate和UINavigationController,在先前的版本,經常會這樣使用,這樣程式由MainWindow.xib載入,便有了AdvancedTableViewCellsAppDelegate對象和navigationController對象。在新版的xcode,已不再需要這樣,window和AppDelegate已經建立了。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.