2013-12-11 247 views
15

我是iOS和Objective-C的新手,在理解控制器的工作方式方面遇到了一些麻煩。UITableViewController在UIViewController中

在我的代碼我有一個UIViewController(與故事板分配我的自定義控制器),並在其內部,與其他物體放在一起,我想有一個不同的控制器處理的表。什麼是正確的方法來做到這一點?

+0

的*這樣做,是讓你的UITableView由包含它使用UITableViewControllerDelegate的控制的UIViewController的正確方法*。一個良好的開始是https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html –

+1

我知道,但我想有兩個不同的控制器,因爲我已經有另一個UITableView的UITableViewController,我想使用相同的代碼。 – Heisenberg

回答

34

您可以使表視圖控制器UIViewController中的一個子視圖控制器。在故事板中,您可以通過將容器視圖拖動到控制器視圖中來輕鬆完成此操作,並且會自動爲您提供子視圖控制器。你需要刪除它給你的控制器(它只是一個UIViewController),拖出一個表視圖控制器,控制從容器視圖拖動到表視圖控制器,並選擇「嵌入」。如果你需要從UIViewController獲得對這個表視圖控制器的引用,你可以在prepareForSegue中做到這一點 - 表視圖控制器將是segue的目標視圖控制器,而prepareForSegue將在控制器實例化後立即調用。

+1

這正是我所期待的,謝謝! – Heisenberg

+0

沒有故事板會怎麼做?在正常的xib文件中。任何想法?謝謝 – Malloc

+2

@Malloc,你在代碼中使用自定義容器控制器api(它在UIViewController類的引用中有它自己的部分)做到這一點。基本上,你可以調用addChildViewController:在你的父控制器上傳遞你想要成爲孩子的控制器。然後你調用didMoveToParentViewController:在子節點上傳遞父節點作爲參數。最後,將子視圖添加爲父視圖的子視圖。 – rdelmar

3

添加到的UITableViewController故事情節,創造的UITableViewController的子類(新文件)。在Storyboard中,轉到Identity Inspector並在您創建的子類的Class字段類型名稱中。之後,您必須根據您的要求添加您的應用程序邏輯。

2

在故事板製作其他的UITableViewController,去其檢查,併爲其分配您已經之前創建相同的UITableViewController類...

12

你會想要使用嵌入式容器視圖。

  1. 將「容器視圖」從Interface Builder側欄拖到視圖中。這添加並鏈接了一個默認的「包含」UIView/Controller。

  2. 刪除整個的UIViewController並查看自動添加並鏈接到容器視圖(因爲你會希望有一個表視圖控制器來代替)。

  3. 將一個UITableViewController到故事板畫布。

  4. 控制-將來自容器視圖到表視圖控制器。選擇「嵌入」以在容器視圖中包含UITableView。

你留下了父視圖,現在包含通過容器視圖的UITableView。表視圖的控制器也在故事板畫布上。

Table View Controller inside a Container View

相關問題