2014-02-11 42 views
1

我聽到很多人說他們使用Storyboards來佈置事物,但是爲了創建可重用的視圖和其他原因,Storyboards達不到他們的期望,他們選擇仍然使用nibs/xibs。如何與故事板一起使用nibs/xibs?

在Storyboards被接受後進入iOS開發領域實踐和Apple開始不再談論nibs了,我很困惑如何混合這兩者,似乎缺乏解釋組合的資源或教程。

如果我想有一個可重複使用的UIView,說有一個UIImageView,並與它UIProgressView嵌入,做我創建一個筆尖文件,並使用[NSBundle mainBundle]進口帶來它?或者,我是否像使用Storyboard一樣使用它,並使用一個帶有可重用視圖的大型nib文件,然後明確導入視圖?

有關如何一起使用它們或者甚至只是指向教程鏈接的說明將不勝感激。我真的想要與Storyboard一起利用筆尖的好處,但我很難理解它。

+0

請注意,您不受限於故事板。在我看來,他們在很多方面只是混淆了這個問題。我有時候還會使用xib文件編寫應用程序。但混搭也很好。你可以有多個故事板和多個xibs ...... – matt

回答

2

有兩種方法可以將視圖從xib中拉出。

  • 如果它是一個視圖控制器的主視圖,那麼這只是發生在視圖控制器的一個實例都需要其觀點或多或少自動(因爲它們是由名稱或視圖控制器的方式有關被實例化)。

  • 否則,這樣做:有認爲是在廈門國際銀行唯一的頂級對象,並加載廈門國際銀行,抓住唯一的頂級對象,像這樣:

    NSArray* objects = [[UINib nibWithNibName:@"SomeName" bundle:nil] 
            instantiateWithOwner:nil options:nil]; 
    UIView* v = objects[0]; 
    

    現在你可以將新實例化的視圖嵌入到您的界面中。正如你所說的,你可以一遍又一遍地獲得更多的實例。

注意:第三種方法是加載與具有出口到視圖所有者的廈門國際銀行,但解釋說,需要更詳細的比我想進入這裏,它可能沒有得到你現在需要的任何東西。

+0

在我看來,最好的解釋就是你所期望的,我的書。本書當前版本的「基礎知識」卷中有一個關於筆尖管理的非常強大的章節,講述了xib和故事板如何並肩居住(如你所說,在這個時代,當他們以故事板開始你時,無論你喜歡它還是不喜歡)。或者你可以閱讀[在線版本](http://www.apeth.com/iOSBook/);你特別想要章節7和19。 – matt

+0

謝謝,我愛讀你的書。那麼,擁有不同視圖的5個nib文件沒有問題嗎? –

+0

絕對沒有!這是一件完全合理的事情。一個筆尖不過是一種對指令進行編碼的方式,用於實例化和初始化包含的對象。您不介意在代碼中創建對象,那麼爲什麼要介意通過加載一個筆尖來製作對象呢?也許加載一個筆尖需要一點時間(尤其是第一次加載它),當然它會佔用一小部分空間,但我認爲這不是一個很大的缺點。 – matt