2013-08-26 55 views
4

例如,如果我需要一個UITableView出現下面在視圖中的附加內容,這將是最好的做法要麼:嵌入視圖控制器或添加子視圖會更好嗎?

  • 添加UITableView作爲一個子視圖,或
  • 添加保持的容器視圖UITableViewController

就我所知,兩者都會提供相同的用戶體驗,但是我很想知道哪種方法會被認爲是最佳實踐?

+0

每個控制器的每個視圖很容易編寫和調試。但是,您可以創建與相同視圖控制器(如數據源)交互的不同模型對象,並且委託可以是不同的對象。 – Sandeep

回答

3

iOS的一般規則,特別是對於iPhone/iPod touch的外形規格,就是您在任何給定時間應該只有一個視圖控制器在屏幕上。當我們想要違反指南的時候,我能想到的唯一情況就是當你有一個內置了很多邏輯的子視圖時,子視圖需要被包含在多個其他視圖中。例如,彈出窗口應該有自己的視圖控制器,因爲它可能需要與多個其他視圖控制器一起顯示。除非(1)表視圖有很多與父視圖控制器的邏輯不相關的邏輯,否則我會強烈建議將UITableView作爲子視圖添加,或者(2)需要在應用程序的另一部分顯示相同的表格視圖。

+2

我不同意在今天的iOS通用規則。添加子視圖控制器的能力似乎是朝不同方向發展的。這裏有一篇關於這一切的好文章:http://www.objc.io/issue-1/containment-view-controller.html –

+0

從「每個屏幕一個」的變化已經發生在Android世界。如果事情變得更好,那麼iOS世界也會朝這個方向發展,這只是時間問題。將應用程序切片爲組件始終是一件好事。 – allprog

+0

@JamesRichard這很好。感謝您的鏈接。 – bdesham

5

您有幾種選擇:

  1. 添加UITableView,使含有視圖控制器表視圖的數據源和委託。
  2. 添加一個UITableView併爲表視圖的數據源和委託創建其他一些類。
  3. 用表格創建一個單獨的視圖控制器,然後將第二個視圖控制器添加爲第一個子視圖控制器。

選擇取決於適當的職責分工和封裝。

選項2 & 3允許重用,如果您需要將表視圖嵌入到多個視圖控制器中。

對您的問題沒有簡單的答案。這完全取決於您的需求,數據和應用程序的結構。

1

我寧願使用容器視圖控制器,原因如下:

  • 它可以在應用程序的另一部分進行再利用。例如,主視圖控制器主要關注顯示關於模型的信息,而表視圖控制器處理顯示關於模型中關係的信息。)。
  • 保持源文件更小,更易於閱讀。
  • 更容易構建測試。

最終,它們都是有效的解決方案。

相關問題