2010-09-23 59 views
7

我正在關注此示例:http://doronkatz.com/ipad-programming-tutorial-hello-world。 這個例子效果很好。添加導航控制器以在分割視圖中詳細查看

現在我想在splitview中爲每個選項卡分配一個新的導航控制器。 但我不知道如何實現它。 我去這個代碼:

- (void)setDetailItem:(id)newDetailItem { 
if (detailItem != newDetailItem) { 
    [detailItem release]; 
    detailItem = [newDetailItem retain]; 

    // Update the view. 
    navigationBar.topItem.title = detailItem; 

    if ([detailItem isEqualToString:@"Test"]) { 
     TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil]; 
     [self.navigationController pushViewController:testViewController animated:NO]; 
     [mapViewController release]; 

    } 
    if ([detailItem isEqualToString:@"Test2"]) { 

    } 

} 

if (popoverController != nil) { 
    [popoverController dismissPopoverAnimated:YES]; 
}   

但我知道,我居然沒有用「pushviewcontroller」,我只是想從這一點開始新的navigationcontroller,所以在SPLITVIEW每個選項卡。我怎樣才能做到這一點?我知道這是非常基本的,但我無法弄清楚。

謝謝。

+0

在這裏,你可以做到這一點使用簡單的添加導航控制器,並添加子視圖基本視圖。如果您發現任何問題,請讓我知道。我很想爲你解決這個問題。 – AppAspect 2011-06-20 18:15:37

回答

0

如果我正確理解你,你有一個UISplitViewController,並且你希望有三個UINavigationController作爲詳細視圖。在這種情況下,如果在你的UISplitViewController類中實現下面的工作:

if ([detailItem isEqualToString:@"Test"]) { 

     TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil]; 

     //since self.viewControllers is immutable, let's make our own temporary copy. 
     NSMutableArray *tempArray = [self.viewControllers mutableCopy]; 

     //switcheroo with the new view controller 
     [tempArray replaceObjectAtIndex:1 withObject:testViewController]; 

     // our new view controller is retained by the array, so let's release it 
     [testViewController release]; 

     //set the new array to be displayed 
     self.viewControllers = tempArray; 

     //clean up - out mutableCopy returns a retained object 
     [tempArray release]; 


    } 
2

據我瞭解你的需求,你要一個拆分視圖控制器作爲主控制器。左側面板將選擇一個項目,該項目的右側詳細視圖將包含3個選項卡。每個標籤都有一個導航控制器。應用商店遵循類似於詳細視圖的模式。

將控制器構造爲樹很重要。

  • 根:拆分視圖控制器
    • 列表視圖:表控制器(MasterViewController用於選擇水果)
    • 細節視圖:選項卡控制器(約西瓜所有信息)
      • TAB1:導航控制器
        • 第1頁:第一個標籤根控制器(西瓜歷史)
      • TAB2:導航控制器
        • 頁面1:第一個選項卡根控制器(西瓜農場的地圖)
      • TAB3:導航控制器
        • PAGE3:第一接線片根控制器(西瓜配方)

使用此模式,您可以在viewDidLoad上創建控制器結構,但在響應setDetailItem時更改頁面1,2,3中的內容。UINavigatorContoller有一個popToRootViewControllerAnimated消息,可以重置每個3的導航控制器堆棧導航控制器。當我開始學習ios開發時,我發現在代碼中設置控制器層次結構比使用接口生成器更容易。一旦你瞭解概念,IB的速度會更快。您仍然可以爲page1,2,3根視圖控制器創建一個IB nib控制器。

很好的參考:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457

相關問題