2012-03-12 11 views
5

Navigasyon denetleyicisinin bir parçası olamayan bir SplitViewController kullanıyorum. Bir IBAction üzerinde SetRootViewController kullanıyorum, bu iyi, ama animasyonlu değil. İdeal olarak, Navigasyon Kontrolörü ile aynı animasyonu kullanmak isterim (soldan/sağdan kaydırın) ama eğer mümkün değilse, bunu yapmak istediğimde tutarlı bir animasyon kullanmak istiyorum.setRootViewController'ı canlandırabilir misiniz?

+0

istediğini hakkında daha fazla ayrıntı verebilir misiniz? UISplitViewController'ınızı UINavigationController gibi zaman ve nerede harekete geçirirsiniz? –

+0

Svc, bir kullanıcı bir düğmeyi tıklattıktan sonra ilk ekranda bir denetlemeden, bir denetleyiciden yüklenir. Svc'in bir itme ya da çapraz çözülme ya da bir şeyde canlandırılmasını istiyorum. – glenstorey

cevap

5

Bundan emin değilim, ama ben aşağıdakileri öneririz.

UISplitViewController ürününü UIWindow ürününüzün rootViewController ürününe ayarlayın. viewDidLoad'da, düğmenin UIViewController modeliyle bir presentModalViewController:animated: çağrısı yapın. Animasyon yapmadığınızdan emin olun. Bu, uygulama lansmanında gördüğünüz ilk bakışın modal görünümün olduğu yanılsamasını verir. Düğmeye bastığınız zaman , düğmenin en UIViewControllerdismissModalViewControllerAnimated: ile animasyon. Artık nasıl animasyon yapacağınızı seçebilirsiniz. Seçimlerinizden biri çapraz çözülüyor.

+0

Bu gerçekten yaratıcı bir çözümdür, bir adım atacağım ve nasıl geçeceğimi bilmenizi sağlayacağım. – glenstorey

+0

Bu işe yarar ve bu problemi çözmenin harika bir yolu - bu yüzden doğru cevabı aldınız - ama aslında kullanacağımdan emin değilim. Biraz dağınık ve amaçlanan tasarım akışını biraz kırıyor; Özellikle SVC sadece uygulamanın bir bölümünde kullanıldığı için.Svc arasında viewDidLoad ve btnClick üzerine görevden .. ama VC bina olarak kabul edilmektedir ve SVC SVC viewDidLoad sunulmuştur: animasyonlu: – glenstorey

+0

@Dries De Smet-- i önerdi i presentModalViewController için kod yazdıklarını çalıştı olduğunu tekrar çağrıldı presentModalViewController: animated: çağrılıyor ve Vc tekrar gösteriliyor. Yanlış bir şey mi yapıyorum. – Bonnie

2

iOS 5.0 kullanmak, başlangıçtaki rootViewController gelen SplitViewController sunmak için presentViewController:animated:completion kullanmak mümkün olacak.

iOS 5.0'dan önceki tek seçenek, rootViewController'in görünümünde transitionFromView:toView:duration:options:completion yöntemini kullanmaktır, bu da birkaç mesajı SplitViewController aracınıza el ile geçirme konusunda biraz çaba göstereceğiniz anlamına gelir. iOS öncesi 5.0, kapsayıcı ViewControllers desteklemiyor.

Ama muhtemelen tasarımınızı yeniden düşünmek istiyorum. SplitViewController'ı rootViewController olarak ayarlamanız gerekir. Uygulama başlangıcında (veya ihtiyacınız olduğunda) LoginViewController'ınızı moda olarak sunmalısınız. Kullanıcı başarıyla giriş yaptığında, modal görünümünüzü, seçmek istediğiniz animasyonla gizlersiniz. SplitViewController ana ViewController olduğundan

bu uygulama rootViewController olmalıdır.

+0

Çözümünüz doğru ama yeniden tasarlamayı kabul etmiyorum. Yapmaya çalıştığı şey kesinlikle mantıklı. Birçok durumda, önerilen çözümünüz işe yaramaz. Aynı tasarımı kullanıyoruz - kendi ekran değiştirme mekanizmamızı ve kendi bölünmüş görüş kontrol cihazımızı (gerçekten çok kolay) yazıyoruz. – Sulthan

+1

Cevabınız için teşekkürler Ben-G. [AppDelegate.window setRootViewController: splitViewController] öğesini denediğimde; [splitViewController presentViewController: splitViewController animasyonlu: EVET tamamlanma: NULL]; Hata alıyorum 'Uygulama bir Split Görünüm Denetleyicileri modally . Sunmaya çalıştı.'. Sanırım bir yerlerde yanlış sözdizimi kullanıyorum? Yaptığım tasarım kararları konusunda @Sulthan'a katılıyorum, ancak öneri için teşekkürler. – glenstorey

+0

[link] ile ilgili olarak (http://stackoverflow.com/questions/2579861/split-view-controller-must-be-root-view-controller) SplitViewController, özel olarak hazırlanmış bir durumdur, modaya sunulmasına izin verilmez. Ne yazık ki alternatif bir çözümle gitmek zorunda kalacaksınız ya da splitViewController'a iletilen iletiyi kendi başınıza ele alan "transitionFromView: toView:" yöntemini kullanın. –

İlgili konular