0

私は4つのタブを持つTabBarControllersのアプリを持っています。さて、私はこれをしなかったdidFinishLaunchingWithOptionsに:ViewControllerの名前を取得する

UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; 
    lpgr.minimumPressDuration = 5.0; 
    lpgr.delegate = self; 
    [self.window addGestureRecognizer:lpgr]; 
    [lpgr release]; 

この部分の作業と長押しジェスチャーは、すべての4つのタブに認識されています。今、ユーザーが現在押している現在のViewControllerの名前を渡したいので、長押しイベントを処理する関数で渡すことができます。

答えて

8

あなたは試すことができます:

NSStringFromClass([YourViewController class]); 

と現在のビューコントローラ、使用する

:あなたは、インデックス(0-3)を渡す必要があり

NSStringFromClass([self class]); 
+0

これは、AppControllerクラスではなくAppDelegateクラスのみを返します。私はすべてのViewControllerにNSStringFromClass([self class])を置くのではなく、appDelegateですべてをやりたい – Diffy

+0

@Diffy下の1つを参照してください... !!!! – Kamarshad

+0

@Diffy VCの各VCに対してパブリックメソッド(たとえば 'selectedViewControllerName:')を作成すると、選択したVCのメソッドを呼び出してVCの正しい名前を取得できます。 _ "すべてのViewControllerにNSStringFromClass([self class])を入れるのではなく、appDelegateですべてをやりたい" _もしそうなら、最初のものを使うだけで、選択したVCの 'TAG'をチェックすることで名前を返すことができます。 – Kjuly

1

、あなたのコントローラーを返却するメソッドを持っていますインデックスから(またはコントローラをパブリック配列に)配置します。あなたがTabBarのコントローラには4つのViewControllerを追加したトールドAS

4

はワン(更新)

下に試してみてください。

TabBarControllerからようのViewControllerを取得:

UIViewController *current = tabBarController.selectedViewController; 

NSArray *controllerNameArray = [current childViewControllers]; 

のNSLog(@ "クラス名の%の@"、[controllerNameArray objectAtIndex:0])。

私は...あなたにそれは本当に便利願っています!

+0

ありがとうございました。私はあなたのコードからのヒントを得た、私はUIViewController * current = tabBarController.selectedViewControllerを使用しました。 NSArray * className = [現在のchildViewControllerers]; NSLog(@ "className%@"、[className objectAtIndex:0]);クラス名を取得する。 – Diffy

+0

@Diffy大歓迎です。素敵です... !!!!!あなたはあなたの答えを持っています。 – Kamarshad

関連する問題