【发布时间】:2016-07-04 15:44:47
【问题描述】:
这是我的问题。我有三个视图控制器(VC1、VC2 和 VC3)。从 UINavigationControllerDelegate 继承的每个视图控制器,我以这种方式将我的导航控制器委托给 viewWillAppear 方法:
self.navigationController.delegate = self;
我使用的唯一 UINavigationControllerDelegate 方法是用于转换:
- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC {
if (operation == UINavigationControllerOperationPush || operation == UINavigationControllerOperationPop) {
myTransitionController *transitionController = [[myTransitionController alloc] init];
return transitionController;
}else{
return nil;
}
}
我的问题是:当我从 VC1 走到 VC2 并进入该控制器触发 NSNotification 时,我执行 popViewControllerAnimated 以返回之前的视图控制器 (VC1)。这是代码:
- (void) backToRoot: (id) sender{
[self.navigationController popViewControllerAnimated:YES];
}
并且 UINavigationBar 正确显示其外观(UINavigationBar 没有后退按钮)。然后,当我从 VC1 走到 VC2 直到 VC3,并以编程方式返回到带有 popToRootViewController 的 VC1 时,视图的转换 (VC3-VC2-VC1) 它工作得很好,但是 UINavigationBar 外观没有更新,它显示为VC1(根视图控制器)中的后退按钮。我在VC3中实现的方法是这样的:
- (void) goToRoot{
[self.navigationController popToRootViewControllerAnimated:YES];
}
我尝试过两次调用 popViewControllerAnimated,我在 VC2 中添加了 viewWillAppear 和 viewDidAppear 方法,但它也不起作用。有人知道会发生什么吗?
【问题讨论】:
标签: ios objective-c