popToRootController不起作用

popToRootController不起作用

我创建了以下故事板:


  
  导航控制器
  
  登录视图控制器
  
  标签控制器
  导航控制器
  
  搜索视图控制器
  
  结果视图控制器
  
  详细视图控制器
  
  
  
  导航控制器
  
  高级搜索视图控制器
  
  结果视图控制器
  
  详细视图控制器
  
  
  
  
  
  


当用户点击标签栏按钮时,我要确保他们看到的视图是搜索(如果点击了搜索)或高级搜索(如果点击了高级),而不是他们以前可能在堆栈中指向的那个点。给定标签。换句话说,我想让它们从顶视图/根视图开始

我已经将标签栏的委托设置为一个类,并将didSelectViewController实现为:

标签栏控制器.h

#import <UIKit /UIKit.h>
@interface TabController : UITabBarController <UITabBarControllerDelegate>
@end


标签栏控制器.m

- (void) viewDidLoad
{
    [super viewDidLoad];
    self.delegate = self;
}

- (void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    [viewController.navigationController popToRootViewControllerAnimated:YES];
}


在搜索和高级搜索控制器中。

- (void) viewWillAppear
{
    [super viewWillAppear:animated];

    //Hide the nav bar at the search/advanced controller level.  Will be shown at results and detail levels
    [[self navigationController] setNavigationBarHidden:YES animated:YES];

    //Set the text for the back button
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle: @"title" style: UIBarButtonItemStyleBordered target: nil action: nil];

    [self.navigationItem setBackBarButtonItem: backButton];
}


结果是,当用户点击“高级搜索”按钮时,仅出现黑屏。注释掉该代码,正确显示“高级搜索”。

请注意,结果和详细信息控制器将同时用于搜索和高级搜索。

有任何想法吗?谢谢你的帮助。如果我的头一直撞到这堵墙,我就不必买万圣节服装了!

最佳答案

我有同样的问题。我已经使用此代码,并且可以正常工作。[(UINavigationController *)viewController popToRootViewControllerAnimated:NO];

关于iphone - popToRootController不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12937800/

10-09 15:35