1

わかりやすく説明しましょう。

シングルビューアプリケーションプロジェクトのメインビューコントローラーであるviewcontrollerにtabbarcontollerがあります。

サブビューとしてviewcontrollerにtabbarcontrollerを追加しました。tabbarcontroller では、下の画像のように 2 つのナビゲーション コントローラーを追加しました。

ここに画像の説明を入力

3 つ (First、Second、Third という名前) のビューコントローラーを新しいファイルとして追加しました。

以下を使用して、あるビューコントローラーから別のビューコントローラーに移動すると、

third =  [[Third alloc] initWithNibName:@"Third" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:third animated:YES];

次のタブに切り替えて前のタブに戻ると、前のView Controllerにポップする必要があります。これを行う方法は?

私は試した

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{

    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
}

成功しない、

私も試しましたが、

[third popto];

3 番目のビューコントローラーでは、

-(void)popto
{
  [self.navigationController popViewControllerAnimated:YES];
}

何も起こらなかった。

ここで、タブをもう一度クリックして、poptoviewcontroller を最初のビューコントローラーに移動する必要があります。

どんなアイデアでも大歓迎です。

4

3 に答える 3

2

使ってみるべきです

[viewController.navigationController  popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];

それ以外の

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
于 2013-09-10T13:38:45.063 に答える
1

以下のコードスニペットを試してください

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
 UINavigationController *navController = (UINavigationController*)viewController;

if (navController && ([[navController viewControllers] count] > 0))
{
    [navController popToRootViewControllerAnimated:NO];
}
return YES;
}

それがあなたのために働くことを願っています。

于 2013-09-10T14:08:58.000 に答える
0

カスタムの UITabbarController をオーバーライドして、次のメソッドを実装するのはどうですか。

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;

次に、タブバーのすべての「viewcontrollers」(この場合はナビゲーション コントローラー) をループして、すべてのナビゲーション コントローラー popToRootViewController を呼び出します。

これはうまくいくかもしれません。

于 2013-09-10T13:59:38.337 に答える