web-dev-qa-db-ja.com

UIViewControllerがObjectivecの特定のサブクラスに属しているかどうかを確認するにはどうすればよいですか?

UIViewControllerのタイプをチェックして、このような特定のタイプであるかどうかを確認できるようにしたい

cコード

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

  // do more stuff
}
21
Arcadian

isKindOfClass:メソッドは、オブジェクトが特定のクラスのインスタンスであるか、そのクラスのサブクラスのインスタンスであるかを示します。

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

オブジェクトが特定のクラスのインスタンスであるかどうか(ただし、そのクラスのサブクラスのインスタンスではない)を確認する場合は、代わりにisMemberOfClass:を使用してください。

39
var someVC: UIViewController

if someVC is MyCustomVC {
    //code
}
15
Harry Ng

Swiftバージョン:

var someVC: UIViewController

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

試してみてください:

[vc isKindOfClass:[CustomViewController class]];
5
Kevin Sylvestre

この回答 に加えて追加したかったのですが、ビューコントローラーがswitchステートメントで特定のタイプであるかどうかを確認したい場合(Swiftの場合)次のように実行できます。

var someVC: UIViewController?

switch someVC {
    case is ViewController01: break
    case is ViewController02: break
    case is ViewController03: break
    default: break
}
4
John R Perry

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)
                            }
                        }
2
SARATH SASI