12

次のように、navigationController スタックで viewControllers を取得しています。ここで、一番上のコントローラーが既知の vc の 1 つであるかどうかを確認する必要があります。それを比較するためにVCクラス名を取得する方法は? ありがとうございました。

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

何かのようなもの、

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

4 に答える 4

33

これを使用してください

 NSString *CurrentSelectedCViewController = NSStringFromClass([[((UINavigationController *)viewController1) visibleViewController] class]);
于 2012-11-29T10:32:24.997 に答える
14

最も一般的な手法は、次を使用すること-isKindOfClassです。

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

ビュー コントローラをリファクタリングして名前を変更すると、コードが壊れてしまうため、文字列を比較するために使用NSStringFromClassするのはあまり良い解決策ではありません。

于 2012-11-29T11:04:57.167 に答える
4
if ([NSStringFromClass([[viewContrlls lastObject] class]) isEqualToString: @"Whatever"]){
}

-isKindOfClassインスタンスを特定のクラスと直接比較したい場合にも使用できます。

于 2012-11-29T10:33:20.120 に答える