2012-11-29 22 views
11

NavigationController'ı viewControllers uygulamasında aşağıdaki gibi yığınlandırıyorum. Şimdi üstte denetleyici bilinen vc olup olmadığını kontrol etmem gerekiyor. Karşılaştırmak için vc sınıf adı nasıl alınır? Teşekkür ederim. Belirli bir sınıfa doğrudan bir örneğini karşılaştırmak için tercih eğeriOS'ta UIViewController sınıf adı al

NSString *CurrentSelectedCViewController = NSStringFromClass([[((UINavigationController *)viewController1) visibleViewController] class]); 

cevap

30

bunu kullanın bulunuyor .

+0

hey çalışma! harika, gerçekten minnettar! – Jaume

4
if ([NSStringFromClass([[viewContrlls lastObject] class]) isEqualToString: @"Whatever"]){ 
} 

Ayrıca -isKindOfClass kullanabilirsiniz Bu Yardım edebilir

NSArray *viewContrlls=[[self navController] viewControllers]; 
[viewContrlls lastObject] 

gibi bir şey

if ([[viewContrlls lastObject] name] isEqualToString @"viewControllerName"){ 
14

en yaygın tekniktir -isKindOfClass kullanmaktır: bunu adlandırmak için görünüm denetleyicisi refactor eğer kod kıracak çünkü dizeleri karşılaştırmak için NSStringFromClass kullanma

if ([[viewContrells lastObject] isKindOfClass:MyViewController.class]]) { 
    // ... 
} 

çok güzel bir çözüm değildir.

-1

Swift versiyon:

static func getClassNameAsString(className: AnyObject) -> String { 
    return _stdlib_getDemangledTypeName(className).componentsSeparatedByString(".").last! 
} 
+0

çözümlenmemiş tanımlayıcı _stdlib_getDemangledTypeName. Ayrıca, hangi kütüphaneyi içe aktarmamız gerektiğini söylemelisiniz. – Integer