2010-09-23 16 views
7

Bu örneği takip ediyorum: http://doronkatz.com/ipad-programming-tutorial-hello-world. Bu örnek harika çalışıyor.Ayrıntı görünümünde gezinme denetleyicisi ekle

Şimdi, bölünmüş görünümde 3 sekme ve her sekme için yeni bir gezinme denetleyicisi istiyorum. Ama nasıl uygulayacağımı bilmiyorum. Bu kod gidin:

- (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]; 
}   

Ama ben aslında 'pushviewcontroller' kullanmak zorunda olmadığını biliyoruz, sadece o noktadan başlayarak yeni NavigationController istiyorum ve bu yüzden SplitView her sekme için. Bunu nasıl başarabilirim? Bunun gerçekten basit olduğunu biliyorum ama anlayamıyorum.

Teşekkürler.

+0

bu kullanarak basit ekleyerek navigasyon kontrolörü yapmak ve taban görünümüne subview ekleyebilirsiniz. Herhangi bir sorun bulursanız lütfen bana bildirin. Bu sorunu sizin için çözmeyi çok isterim. – AppAspect

cevap

0

Doğru bir şekilde anlıyorsam, bir UISplitViewController var ve üç UINavigationControllers ürününü ayrıntılı görünüm olarak kullanmak istiyorsunuz. senin UISplitViewController sınıfta uygulanması durumunda Bu durumda, aşağıdaki çalışır: Ben senin gereksinimi anlamak gibi

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

, ana kontrolör olarak bölünmüş görünüm denetleyicisi istiyorum. Sol panel bir öğe seçecek ve bu öğe için doğru ayrıntı görünümü 3 sekme içerecektir. Her sekmede bir gezinme denetleyicisi bulunur. Uygulama mağazası, ayrıntı görünümüne benzer bir desen izler.

Denetleyicilerinizi bir ağaç olarak yapılandırmanız önemlidir.

  • kök: bölünmüş görünüm denetleyicisi
    • liste görünümü: Tablo kontrolör (meyve seçimi için MasterViewController)
    • ayrıntılı görünüm: Sekme kontrolör (karpuz hakkında tüm bilgi)
      • tab1: Navigasyon kontrolörü
        • sayfa 1: ilk sekme kök denetleyicisi (karpuzların geçmişi)
      • Tab2: Navigasyon kontrolör
        • sayfa 1: İlk sekme kök kontrolör (karpuz çiftliklerinin haritası)
      • tab3: Navigasyon kontrolör
        • sayfa3: İlk sekme kök kontrolör (karpuz tarifler)

Bu modelde, denetleyici yapısını viewDidLoad üzerinde oluşturabilir, ancak setDetailItem için yanıt verirken sayfa 1, 2, 3'ün içeriğini değiştirebilirsiniz UINavigatorContoller, önceki gezinme denetleyicisi yığınının her biri için bir önceki gezinme denetleyicisi kümesini sıfırlayabilen bir popToRootViewControllerAnimated mesajına sahiptir. navigasyon kontrolörleri. Ios gelişimini öğrenmeye başladığımda, denetleyici hiyerarşilerini kodda arayüz oluşturucu kullanmaktan daha kolay bir şekilde kurdum. Kavramları aldıktan sonra IB daha hızlıdır. Hala sayfa1,2,3 kök görünüm denetleyicileri için bir IB uç denetleyicisi oluşturabilirsiniz.

iyi bir referans: Burada http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457

İlgili konular