2014-07-03 124 views
12

目前我們在所有項目中都使用Storyboard over xib。但是在我看來,如果你想製作可以在不同視圖控制器中重用的可重用視圖(自定義視圖或表格視圖單元格),則必須像在故事板中一樣使用xib文件,我們無法單獨製作單個視圖對象。故事板上的XIB

請注意,我正在使用Storyboard進行整個應用程序的工作流程(視圖控制器具有四分法)。僅用於可重複使用的tableview單元格,我使用的是XIB。

我已經在很多蘋果文件以及WWDC視頻中進行了搜索,但是我找不到蘋果開發者提供的任何具體證據,這些證據表明XIBs在這裏停留,或者您應該使用XIB作爲自定義視圖。

如果你們中的任何一個人有任何形式的鏈接,有點信心我們仍然可以使用XIB而不用擔心蘋果將其移除,但是真的很感激。

+1

您可以使用多個故事板和回用故事板內的元素在你應用程序的不同部分。而且你不會贏得爭論,因爲蘋果通常不會提供關於他們未來計劃的詳細信息。詢問你的前輩爲什麼他們甚至使用故事板。代碼會比一些奇怪的格式長得多。 – dasdom

+0

感謝您的回覆。據我所知,我們只能在Storyboard中創建視圖控制器作爲根對象。不是嗎?如果我想創建小的自定義視圖,該怎麼辦?我們必須使用xib(如果不在代碼中)對嗎? –

+1

是的,你是對的。您只能從故事板獲取視圖控制器([instantiateViewControllerWithIdentifier](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIStoryboard_Class/Reference/Reference.html#//apple_ref/occ/instm/UIStoryboard)/instantiateViewControllerWithIdentifier :))。對此感到抱歉。 – dasdom

回答

7

當您不重用視圖時,建議使用故事板。

一旦你想在多個視圖/故事板中重複使用某些東西,那麼你需要XIB。你已經提到了自定義單元格的例子。這是我經常需要的東西,我想在多個表格視圖中使用同一個單元格。我對圖表也一樣。我創建了一個圖表視圖,在其中設置顏色等,並將其重複使用,只將不同的數據放在其中。這爲我節省了很多關於樣式/外觀的代碼,並使應用程序易於維護。如果發生變化(例如由於新的iOS版本),我需要在一個地方更改所有內容。此外,我希望爲iPhone和iPad提供視圖(例如單元格),並讓系統確定要使用哪個視圖。爲此,我需要XIB。我在末尾使用了~iphone~ipad的符號,我不必編寫檢索正確視圖的代碼。

這是兩件事情,你沒有XIB就無法做到。所以,遵循Apple的指導原則,我的方法是儘可能使用故事板,只有在需要時才使用XIB(主要是因爲可重用性)。但是有一個需要XIB的真實案例!當然,忽略它們並不是一個好習慣。其實,在每個項目中我都有故事板和XIB。

編輯:我剛剛發現一個great post解釋故事板的缺點。有很多事情我沒有意識到。

2

此外,您不必專門使用。即使大部分作品都在故事板中,仍然可以使用XIB文件。而且,使用這兩種方法也不會限制您創建完全不在IB中創建的視圖。

故事板有很多優點。特別是當你開始帶新人蔘與項目時。不用被數以萬計的代碼行吞沒,新的開發人員可以查看故事板,並在30分鐘或更少的時間內獲得應用程序流的相當好的概念。

就這樣說,你不應該限制自己任何事情。將自己限制爲故事板,從不使用XIB或在代碼中完全構建視圖就像是在說「我們只使用NSArrays,而不使用NSDictionary或NSSet」。您應該始終確保使用正確的工具來完成工作,而不是一個愚蠢的限制。

0

我的意見是使用哪一個是適合這種情況下,這裏是一些指導:

當用筆尖

  • 模塊化是關鍵,精心設計的筆尖文件
  • 使用筆尖存儲視圖,子視圖,自定義控件或重複視圖
  • 無法表示相關內容的屏幕之間的關係

當使用故事板

  • 鏡腳本是最好的用來代表內容的屏幕和這些屏幕
  • 給予應有的關心和注意prepareForSegue之間的連接:發件人:方法
  • 當設計故事板時,模塊化仍然適用

一般Guidlines

  • 分解你的項目爲
  • 視圖,子視圖和自定義控制應設計全屏內容時被包含在單獨的榫文件 用故事板和有場景之間的明確關係的筆尖和故事
  • 考慮界面是否需要靜態或動態
  • 使用單獨的故事板封裝場景的可重用序列
  • 使用不相關的故事板可以跨不同的控制器被重用場景
  • 表視圖細胞屬於在筆尖文件