Как проверить, является ли UIViewController конкретным подклассом в объекте c?

Я хочу, чтобы проверить тип UIViewController, чтобы увидеть, имеет ли он определенный тип, подобный этому

c code

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

  // do more stuff
}

Ответ 1

Метод isKindOfClass: указывает, является ли объект экземпляром данного класса или экземпляром подкласса этого класса.

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

Если вы хотите проверить, является ли объект экземпляром данного класса (но не является экземпляром подкласса этого класса), вместо этого используйте isMemberOfClass:.

Ответ 2

var someVC: UIViewController

if someVC is MyCustomVC {
    //code
}

Ответ 3

Быстрая версия:

var someVC: UIViewController

if someVC.isKindOfClass(MyCustomVC) {
    //code
}

Ответ 4

Try:

[vc isKindOfClass:[CustomViewController class]];

Ответ 5

Я просто хотел добавить в дополнение к этот ответ, что если вы хотите увидеть, имеет ли контроллер вида определенный тип в переключателе оператор (в Swift) вы можете сделать это следующим образом:

var someVC: UIViewController?

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

Ответ 6

Swift 3.0 в последнем случае мы должны добавить "я" вместе с именем класса или он выдает ошибку " Ожидаемое имя участника или вызов конструктора после имени типа" ниже код u может использоваться для Swift 3 и выше

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