2012-08-22 56 views
4

主視圖和詳細視圖在我的故事板,我的項目開始於拆分視圖即自動分配我的自定義UITableViewController(嵌入在導航控制器)作爲詳細視圖控制器(由關係SEGUE完成)。如何從我的自定義UITableViewController訪問拆分視圖控件,以便適當更改主視圖控制器視圖?改變從uisplitview

回答

7

的UIViewController有一個屬性splitViewController即到ViewController在內部嵌入分割視圖控制器的引用。由於您的表格視圖控制器嵌入在導航控制器內部,導航控制器本身嵌入在分割視圖控制器中,您首先需要獲取對導航控制器的引用,然後從中獲取對分割視圖的引用。

所以在您的自定義tableViewController的代碼,你可以這樣做:

UISplitViewController *splitVC = [[self navigationController] splitViewController]; 

的距離,你可以得到你的masterViewController參考。 splitViewController有一個屬性viewControllers,它是兩個元素的NSArray。索引爲零的元素是主視圖控制器。索引1處的元素是您的詳細視圖控制器。

UIViewController *masterVC = [[splitVC viewControllers] objectAtIndex:0]; 

注意,如果你的主人是一個自定義的viewController子類(它有可能是),你應該將它轉換爲這樣的,當你拉出來的數組。

如果您想完全使用新的viewController來關聯主視圖控制器,可以通過使用新的主控VC和現有的詳細視圖控制器創建一個新陣列,並將其分配給您的分割視圖控制器的viewControllers屬性:

UIViewController *detailVC = [[splitVC viewControllers] objectAtIndex:1]; 
NSArray *newViewControllerArray = [NSArray arrayWithObjects:newMasterVC, detailVC, nil]; 
splitVC.viewControllers = newViewControllerArray; 
+0

這偉大工程!謝謝。 – Mike