2010-11-06 8 views
17

quieren ser capaces de comprobar el tipo de un UIViewController para ver si es de un cierto tipo como este¿Cómo comprobar si un UIViewController es de una subclase particular en el objetivo c?

código c

if (typeof(instance1) == customUIViewController) 
{ 
    customUIViewController test = (customViewController)instance1; 

    // do more stuff 
} 
+0

Debería poder usar el código C en el SDK de iPhone ... ¿Ya probó su código? – Moshe

+0

Excepto que no es código C válido ... – dreamlax

+0

@dreamlax - Nunca dije que fuera. – Moshe

Respuesta

32

El método isKindOfClass: indica si un objeto es una instancia de dado clase o una instancia de una subclase de esa clase.

if ([instance1 isKindOfClass:[CustomUIViewController class]]) { 
    // code 
} 

Si desea comprobar si un objeto es una instancia de una clase determinada (pero no una instancia de una subclase de esta clase), utilice isMemberOfClass: lugar.

5

Probar:

[vc isKindOfClass:[CustomViewController class]]; 
8

versión Swift:

var someVC: UIViewController 

if someVC.isKindOfClass(MyCustomVC) { 
    //code 
} 
13
var someVC: UIViewController 

if someVC is MyCustomVC { 
    //code 
} 
2

simplemente quería añadir, además de this answer que si tienes intención de ver si un controlador de vista es de un cierto tipo en una declaración de interruptor (en Swift) puede hacerlo así:

var someVC: UIViewController? 

switch someVC { 
    case is ViewController01: break 
    case is ViewController02: break 
    case is ViewController03: break 
    default: break 
} 
0

Swift 3.0 en el último, hay que añadir un auto junto con el nombre de clase o se generará un error "esperaba el nombre de miembro o constructor llamada después de nombre de tipo" el código de abajo u can utilizar para Swift 3 y superior

for viewController in viewControllers { 
          if viewController.isKind(of: OurViewController.self){ 
           print("yes it is OurViewController") 
           self.navigationController?.popToViewController(viewController, animated: true) 
          } 
         } 
Cuestiones relacionadas