在ios中维护视图控制器的第一个状态

时间:2015-05-26 10:28:46

标签: ios objective-c uiviewcontroller uinavigationbar

我有三个UIViewController。当我从控制器A转到B然后从B转到C然后再转到B.然后控制器B的导航栏的后退按钮将我带到C.那里有一种方法可以确保B的导航栏不管有多少次我从B到C和C到B.这有可能吗?

2 个答案:

答案 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

注意: 此处我假设您使用了自定义栏按钮项。