0

通信にBluetoothを使用するアプリを構築していEAControllerます。アクセサリデリゲートを処理する(NSObject)というクラスがあります。

そのため、携帯電話が Bluetooth 通信を失った場合、アクセサリ デリゲート メソッドが EAController で呼び出され、そこでアラートを表示できます。私がやりたいことは、通信が失われたときにアラートを表示し、最初のView Controllerに戻ることです。

通知を追加して、すべてのView Controllerにそれをリッスンさせ、現在のView Controllerが「最初のView Controllerに戻る」アクションを処理できることを知っています。

EAControllerしかし、私のアプリには非常に多くのビュー コントローラーがあるため、クラスを介して最初のビュー コントローラーに戻る方法はありますか?

ありがとう。

4

6 に答える 6

0

popToRootViewControllerAnimated:あなたが望むことをします。に直接アクセスできないコードの一部にいる場合はUINavigationController、イベントをプッシュして、それを受信するようにナビゲーション コントローラーを構成できます。そのようです:

ナビゲーション コントローラーがある場所:

UINavigationController *navController = [[UINavigationController alloc] init];

// subscribe to the notification
[[NSNotificationCenter defaultCenter] addObserverForName:@"goBack!" 
                                                  object:nil 
                                                   queue:nil 
                                              usingBlock:^(NSNotification *notification) {

    // pop!
    [navController popToRootViewControllerAnimated:YES];
}];

さて、コードのどこかで...戻りたいときにこれを行います:

// post the notification
[[NSNotificationCenter defaultCenter] postNotification:
    [[NSNotification alloc] initWithName:@"goBack!" 
                                  object:nil 
                                userInfo:nil]];
于 2015-04-23T23:59:30.620 に答える
0
if you are using UInavigationController:
for(UIViewController* vc in self.navigationController.viewControllers)                                                                if([vc isKindOfClass:FirstViewController] 
     {
       [self.navigationController popToViewController:vc anmated:YES];
       break;
     }
于 2013-06-13T23:29:09.633 に答える
0

アプリのデリゲートで通知を処理します。

于 2013-06-13T21:33:06.527 に答える
0

あなたの説明は少しあいまいでした。いくつかのコードは問題をよりよく理解するのに役立つかもしれませんが、 UINavigationControllerpopToRootViewControllerAnimated:があなたが探しているものかもしれません。

EAController が UIViewController であり、ナビゲーション コントローラーが追加されている場合、メソッドを呼び出すためにナビゲーション コントローラーへの参照が必要です。

于 2013-06-13T21:33:47.933 に答える
0

を使用している場合は、メソッドを使用UINavigationControllerできます -popToRootViewControllerAnimated:

于 2013-06-13T21:33:59.290 に答える