2011-03-09 9 views
6

Uygulamamda her iki modda da bir UIViewControle'ı çağırabilirim: Push ve ModalDialog.UIViewController'ın ModalDialog olarak adlandırılıp çağrılmadığı nasıl belirlenir?

UIViewController etkin olduğunda, Push veya Modal Dialog olarak adlandırılmışsa nasıl belirleyebilirim?

+0

olası yinelenen [o ViewController Modal olarak sunulan olup olmadığını belirlemek mümkün mü?] (Http://stackoverflow.com/questions/2798653/iphone-is-: Belki daha genel durumda biri için faydalı olacaktır -en-belirlemek-wheteher-viewcontroller-olduğunu-olarak-moda-moda) –

+0

Burada, görüntü denetleyicisi bir gezinti/sekme denetleyicisi http://stackoverflow.com/ içinde sunulan durumları işleyen çözüm kullanılır a/6349300 – tristanl

cevap

6

Böyle ebeveyn görünümü denetleyicisi modalViewController özelliğini kontrol edebilirsiniz:

if ([self.parentViewController.modalViewController isEqual:self]) { 
    NSLog(@"Modal"); 
} else { 
    NSLog(@"Push"); 
} 

Sadece görünümü sunulan/basıldıktan sonra bunu kontrol etmeyi unutmayın.

+7

UIViewController artık parentViewController için yanıt vermediğinden, bunun yerine ViewController sunmaya çalıştığından, IOS 5+'den çalışmıyor. Bkz. Http://stackoverflow.com/questions/2798653/iphone-is-is-possible-to-determine-wheteher-viewcontroller-is-presented-as-moda – Tieme

2

Henüz bu durumu anlamadıysanız, durumumu ve modal görüntü denetleyicisinde olduğumu nasıl algıladığımı paylaşacağım.

Görünüm denetleyicisini moda olarak sunan bir teklifim var. Bu görünüm denetleyicisi, tüm iyi UIBarButtonItem yeteneklerini miras alabilmem için bir navigationController içine yerleştirilmiştir.

if(self.presentingViewController){ 
     //modal view controller 

    }else{ 


    } 
+0

Burada işe yarayan tek çözüm :) Harika! – filou

5

yardımcı olur.

- (BOOL)isModal { 

    return self.presentingViewController.presentedViewController == self 
    || (self.navigationController != nil && self.navigationController.presentingViewController.presentedViewController == self.navigationController) 
    || [self.tabBarController.presentingViewController isKindOfClass:[UITabBarController class]]; 
} 
ait
+0

Evet! Benim için de –

0

şey viewController kendisini takdim edilemez, fakat onu içeren koleksiyon görünümü denetleyicisi geçerli:

if ([self.parentViewController.presentingViewController.modalViewController isEqual:self.parentViewController]) { 
    NSLog(@"I'm in a modal view controller!"); 
} 

Umut bu Bu benim için çalışıyor

İlgili konular