PopToViewController显示正确的ViewController,但导航栏错误

时间:2012-10-24 07:59:54

标签: iphone ios

我有一个应用程序,其中第一个视图是登录屏幕,用户名和密码用于在应用程序周围进行身份验证。如果在身份验证过程中出现问题,用户将被退回到登录屏幕,但如果用户按下导航栏中的后退按钮时出现问题,则应用程序显示登录屏幕正确,但导航栏将显示它应该显示的视图中的按钮。

示例:如果用户按下View B上的后退按钮,并且应用程序应显示View A,但出现问题,应用程序将显示登录屏幕,但导航栏是来自View A的导航栏。

我尝试了几件事,但最接近的是: 在视图B的ViewWillDisappear中:

        NSArray * nc = [self.navigationController viewControllers];
    [self.navigationController popToViewController:[nc objectAtIndex:0] animated:YES];

它给出了上述结果。

2 个答案:

答案 0 :(得分:2)

在您的LoginController中覆盖viewWillAppear:方法并根据需要设置导航栏按钮:

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

  //Example :
  self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"AText" style:UIBarButtonItemStyleBordered target:self action:@selector(anAction)];
}

如果您不使用ARC,请记得在leftBarButton项目中添加autorelease:

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"AText" style:UIBarButtonItemStyleBordered target:self action:@selector(anAction)] autorelease];

答案 1 :(得分:-1)

成功登录后删除登录屏幕 [self.window removeFromsuperview] 然后它将从导航中删除登录屏幕。 如果它发生了,请接受我的回复谢谢你