我有三个UIViewController。当我从控制器A转到B然后从B转到C然后再转到B.然后控制器B的导航栏的后退按钮将我带到C.那里有一种方法可以确保B的导航栏不管有多少次我从B到C和C到B.这有可能吗?
答案 0 :(得分:1)
在这种情况下,您必须使用自定义后退按钮 -
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(backToViewController)];
self.navigationItem.backBarButtonItem = barBtnItem;
- (void)backToViewController
{
int index =-1;
for (UIViewController *controller in self.navigationController.viewControllers) {
index = index +1;
if ([controller isKindOfClass:[self class]]) {
if (index>0)
{
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:index-1]
animated:YES];
}
break;
}
}
答案 1 :(得分:1)
将控制器A设置为导航和控制器的根控制器。关于后退按钮调用popToRootViewController
方法的点击事件,而不是popViewController
。
注意: 此处我假设您使用了自定义栏按钮项。