5

Manzarayı destekleyen (manzara modundayken) manzarayı desteklemeyen bir görüntü denetleyicisinden (manzara modundayken) çalışmaya çalışıyorum. şöyle Bunu yapmamın: Sorun PushViewController'dan Manzaraya Portre

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait); 
} 

İdeal portre değil manzara başlangıçta başlamak için i yığının üzerine itiyorum yeni viewController istiyorum. Gariptir ki bu yöntem uygulandığında bile, Peyzaj'da başlıyor.

Tek düşüncem, Apple'ın bir kullanıcı için manzaradan dikey geçişe geçmesini istememesidir (manzaradan çıkmamıza rağmen, portredeki eski bir denetleyiciye dönmemize rağmen).

Herhangi bir anlayış ve/veya yardım çok takdir edilecektir.

cevap

10

Portre çekmek için bir yol buldum. Biraz kesmek ama burada. - Yapmanız için aşağıdaki portresini zorlamak istiyorsanız viewController arasında (boşluk) viewDidLoad:

UIViewController *viewController = [[UIViewController alloc] init]; 
[self presentModalViewController:viewController animated:NO]; 
[self dismissModalViewControllerAnimated:NO]; 
[viewController release]; 

Bu temelde (varsayılan olarak yalnızca portre destekler) bir kontrol sunarak, portre zorlar.

+0

Bu sadece benim için pushViewController aracılığıyla sadece portre görünümünden yalnızca dikey görünümüne geçti. Belgelenmemiş özel API'yi çağırmak için kaydeder [[UIDevice currentDevice] setOrientation: UIDeviceOrientationLandscapeRight] Teşekkürler! – MyCSharpCorner

+0

güzel hack ... gerçek kullanışlı geldi ... :) – Roshit

4

Yeni görünüm kontrol cihazınızı bir arada sunmanız gerekecektir. Görünüm denetleyiciniz bir gezinme denetleyicisinde varsa, tüm görüntü denetleyicilerinin nav yığınında yönlendirmesi, yığıntaki kök görüntü denetleyicisinin ima ettiği anlamına gelir. Nav kümesindeki kök görünüm denetleyiciniz ne olursa olsun, shouldAutoRotateToInterfaceOrientation öğesinden döndüğünde, altındaki tüm görünüm denetleyicileri kullanılır.

+0

Gördüğüm gibi durum buydu. Açıklama için teşekkürler! – Sahil

1

Yukarıdaki Sahil tarafından verilen yanıt, iOS 6.0'dan beri kullanımdan kaldırılmıştır. Bununla birlikte, aşağıdakine benzer olan şu gibi görünüyor:

UIViewController *viewController = [[UIViewController alloc] init]; 
[self presentViewController:viewController animated:NO completion:nil]; 
[self dismissViewControllerAnimated:NO completion:nil]; 
[viewController release]; 
İlgili konular