UIViewControllerのタイプをチェックして、このような特定のタイプであるかどうかを確認できるようにしたい
cコード
if (typeof(instance1) == customUIViewController)
{
customUIViewController test = (customViewController)instance1;
// do more stuff
}
isKindOfClass:
メソッドは、オブジェクトが特定のクラスのインスタンスであるか、そのクラスのサブクラスのインスタンスであるかを示します。
if ([instance1 isKindOfClass:[CustomUIViewController class]]) {
// code
}
オブジェクトが特定のクラスのインスタンスであるかどうか(ただし、そのクラスのサブクラスのインスタンスではない)を確認する場合は、代わりにisMemberOfClass:
を使用してください。
var someVC: UIViewController
if someVC is MyCustomVC {
//code
}
Swiftバージョン:
var someVC: UIViewController
if someVC.isKindOfClass(MyCustomVC) {
//code
}
試してみてください:
[vc isKindOfClass:[CustomViewController class]];
この回答 に加えて追加したかったのですが、ビューコントローラーがswitchステートメントで特定のタイプであるかどうかを確認したい場合(Swiftの場合)次のように実行できます。
var someVC: UIViewController?
switch someVC {
case is ViewController01: break
case is ViewController02: break
case is ViewController03: break
default: break
}
Swift 3.0の最新版では、クラス名と一緒にselfを追加する必要があります。そうしないと、エラーがスローされます "型名の後に予想されるメンバー名またはコンストラクター呼び出し"以下のコードuはSwift 3以上
for viewController in viewControllers {
if viewController.isKind(of: OurViewController.self){
print("yes it is OurViewController")
self.navigationController?.popToViewController(viewController, animated: true)
}
}