2011-03-17 20 views
49

Model görünümü olup olmadığını kontrol etmenin bir yolu var mı? Bir modal görünüm varsa, bir yöntemi çalıştırmak istiyorum. Ayrıca, birden çok model görünümüne sahip olursam, belirli bir model görünümünün olup olmadığını kontrol etmenin bir yolu var.iOS - Bir modal görünümün olup olmadığını kontrol etme

ben kalıcı görüşlerini sunmak ve görevden şu kodu kullanın:

[self presentModalViewController:myModalView animated:YES]; 
    [self dismissModalViewControllerAnimated:YES]; 

şimdiden teşekkür ederiz!

Alkış, Evan

PS. Modal görünümüm bir görünüm denetleyicisine sahiptir, ancak model görünümünün eşzamansız olarak çalışan ayrı bir sınıftan mevcut olup olmadığını kontrol etmek isterim.

+7

Bu soru için doğru cevap değiştirmeyi düşünün lütfen ebeveynden bir kalıcı view controller varlığını kontrol edebilirsiniz. – Daniel

cevap

71

Ana görünüm denetleyicisinden mod denetleyicisi var mı kontrol ediyor musunuz? Eğer öyleyse, sadece o bakış kontrolörün modalViewController özelliğini kontrol edebilirsiniz:

BOOL modalPresent = (self.modalViewController); 

Belirli bir modal görünümü kontrolörü kontrol etmek isterseniz, böyle modal görünümü kontrolörün sınıf adı alabilirsiniz:

NSString *modalClassName = NSStringFromClass([self.modalViewController class]); 
+54

self.modalViewController şimdi kullanımdan kaldırıldı, şimdi BOOL modalPresent = (BOOL) (self.presentedViewController); – allaire

+2

@ allaire'ın yorumuna piggyback yapmak için, presentViewController belgesindeki belgeler (http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instp/UIViewController/presentedViewController), bu "görünüm" tarafından sunulmakta ise, bir modal görünüm denetleyicisi önermektedir gibi görünüyor. – Danny

53

kullanarak kontrol edebilirsiniz: self.presentedViewController, benim için çalıştı ne

+4

bu kontrol edilen cevap olmalıdır. 'modalViewController' artık – nburk

+1

'PresentViewController' işlevini kullanmaya devam ediyor. – WMios

5

The view controller that is presented by this view controller, or one of its ancestors in the view controller hierarchy. takip ediyor döndürür:

// this is the trick: set parent view controller as application's window root view controller 
UIApplication.sharedApplication.delegate.window.rootViewController = viewController; 

// assert no modal view is presented 
XCTAssertNil(viewController.presentedViewController); 

// simulate button tap which shows modal view controller 
[viewController.deleteButton sendActionsForControlEvents:UIControlEventTouchUpInside]; 

// assert that modal view controller is presented 
XCTAssertEqualObjects(viewController.presentedViewController.class, MyModalViewController.class); 

Test ettiğim kadarıyla bu, iOS7 ve iOS8 için çalışır. Ancak iOS6'da denemediniz.

+0

UIViewController bir tanesine gömülmüşse, UINavigationController penceresini rootViewController olarak eklemeyi unutmayın. Daha sonra, o navController üzerinde presentViewController 'i çağırınız. :) –

0

Sen view controller

if ([[self presentingViewController] presentingViewController]) { 

} 
İlgili konular