2010-09-23 2 views
7

Я следую этому примеру: http://doronkatz.com/ipad-programming-tutorial-hello-world. Этот пример отлично работает.Добавить navigationcontroller в подробный вид в splitview

Теперь я хочу 3 вкладки в 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

ответ

0

Если вы правильно поняли, у вас есть UISplitViewController, и вы хотите иметь три UINavigationControllers в виде подробных представлений. В этом случае, следующий будет работать, если реализован в классе 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, но затем измените содержимое страниц 1, 2, 3 при ответе на setDetailItem UINavigatorContoller имеет сообщение popToRootViewControllerAnimated, которое может сбросить предыдущий стек контроллера навигации для каждого из 3 навигационные контроллеры. Когда я начал изучать разработку ios, я нашел настройку иерархий контроллера в коде проще, чем с помощью построителя интерфейса. IB быстрее, как только вы получите концепции. Вы все же можете создать контроллер IB nib для контроллеров корневого просмотра стр. 1,2.

хорошая ссылка: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457

Смежные вопросы