2012-01-28 15 views
57

Hikaye panosunda görüntülenen görüntüleyicileri programlı olarak yürütmek için alternatif yollar arıyorum.Görüntü denetleyicisini programla birlikte programlamak için alternatif yollar programlı olarak

  1. pushViewController kullanarak:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil]; 
    LocationWebView *lvc = [storyboard instantiateViewControllerWithIdentifier:@"LocationWebView"]; 
    [self.navigationController pushViewController:lvc animated:YES]; 
    
  2. Segue programlı performans Aslında ben sonraki görünümüne gitmek için kullanmakla kalmayıp önceki dönmek olduğunu, iki yol bulduk:

    [self performSegueWithIdentifier: @"SongSegue" sender: self]; 
    
Eğer som var mı e alternatifler ve bu operasyonun en iyi şekilde yapılması için ipuçları? Model görünümlerine başvurmadığımı unutmayın.

+0

, bir film şeridini ve segues kullandığınız beri, daha sonra 2. bunu yapmanın daha güzel bir yoludur. –

+0

# 1, segue olmayan bir denetleyiciye basmanız gerekirse faydalı olabilir. Örneğin, viewviewer'i mapview açıklamalarının açıklama düğmesinden itin. – kappa

+0

Her şey bir segue olabilir. Her şey, IB'de tamamen yapılmış bir * otomatik * işarete sahip olamaz (düğmeler ve masa hücreleri gibi). Ama yine de bir denetleyiciden başlayarak IB'de bir segue yaratabilir ve bunu gerçekleştirmek için # 2'yi kullanabilirsiniz; Bu, harita açıklama düğmeleri için tam olarak ne yapacağınızdır. – rickster

cevap

4

Şahsen, bir UINavigationController altında bir UIViewController kullandığımda # 2 kullanın. UINavigationController yok işe yaramaz sanmıyorum.

Bir UITabBarController altında bir görünüm kullanıyorum, ben başka bir sekmeye geçiş şu kodu kullanın:

NSUInteger tabIndex = 2; // Index of the tab I want to select 
UIViewController * viewCtrl = [_tabController.viewControllers objectAtIndex:tabIndex]; 
_tabController.selectedViewController = viewCtrl; 
+2

objectAtIndex: 0 '' objectAtIndex: tabIndex' adlı nesne olmamalıdır? – Kevin

+0

@Kevin Haklısınız. Örnekte düzenleme yaptım. – gfrigon

36

Elma programlı segues gerçekleştirmek için performSegueWithIdentifier:sender:someObject kullanılmasını önerir.

  • kendi kodunuzu azı

    Eğer çerçeve izin veriyorsun demektir işin daha do: bu şekilde yapmaya avantajlardan en az bir çift vardır. Apple, push segues için süper serin yeni görsel efektle gelirse veya performansı iyileştirirse veya gelecekteki iOS sürümlerinde bir hatayı düzeltirse, uygulamanız ücretsiz olarak edinilebilir. Ve yazmak için yazdığınız her kod satırı sizin için yapabilir, hata yazma şansınızı artırır.

  • IB'da daha fazlası değiştirmek daha kolay anlamına gelebilir. Tüm itici görevlerinizi modal seferi veya kendi süper-serin görsel efektinizi yaptığınız bazı özel segue tiplerine değiştirmek istediğinize karar verirseniz, hepsini IB'de seçebilir ve avcılık yerine tek bir tıklama ile segue tipini değiştirebilirsiniz. senin kodunda. Ayrıca


, ilk veya ikinci yöntemi kullanmak ister sırayla bir görünüm denetleyicisi bastırıyor Kullanıcıların beklediğiniz şekilde çalışmaz "geri" bir önceki görünüm denetleyicisi gidin. Sonra "geri" gitmek için tekrar LocationViewController itmeliyim

LocationViewController -> SongViewController 

: Bir SongViewController itmek zaman, navigasyon yığının sonuna eklenen oluyor kullanıcı geri düğmesine musluklar

LocationViewController -> SongViewController -> LocationViewController 

ise Gezinme çubuğu, konum görünümünden şarkı görünümüne tekrar konum görünümüne geri döner. (Ayrıca, bunu yapmaya devam ederseniz, her "geri" ve "ileri", başka sorunlara yol açabilecek sürekli artan bir görüntü denetleyicileri zincirine ekleyecektir.)

Bunun yerine, gezinti denetleyicisinin ele almasına izin vermelisiniz. geri gitmek.Bu kullanım için navigasyon çubuğuna bir düğme koyar, bu çoğu kullanım durumlarını ele almalıdır. Geri dönmek için kendi kontrolünüzü yapmanız gerekiyorsa, bunu iOS 5 ile IB'de yapamazsınız, ancak navigasyon denetleyicisinin popViewControllerAnimated: yöntemiyle programatik olarak yapabilirsiniz. şahsen

İlgili konular