繁体   English   中英

Objective-C:当回到根控制器时,UINavigationBar不会更新

[英]Objective-C: UINavigationBar not update when go back to root controller

这是我的问题。 我有三个视图控制器(VC1,VC2和VC3)。 每个View Controller都继承自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以返回上一个View Controller(VC1)。 这是代码:

- (void) backToRoot: (id) sender{
    [self.navigationController popViewControllerAnimated:YES];
}

并且UINavigationBar正确显示其外观(UINavigationBar没有后退按钮)。 然后,当我从VC1走到VC2直到VC3,并以编程方式返回VC1并使用popToRootViewController时,视图的转换(VC3-VC2-VC1)它完美地工作,但UINavigationBar外观没有更新,它显示后退按钮VC1(根视图控制器) 我实现的VC3中的方法是这样的:

- (void) goToRoot{
   [self.navigationController popToRootViewControllerAnimated:YES];
}

我尝试过popViewControllerAnimated的双重调用,我将viewWillAppear和viewDidAppear方法添加到VC2中,它既不起作用也不起作用。 任何人都知道会发生什么?

根据文档,func弹出除根视图控制器之外的堆栈上的所有视图控制器并更新显示但我无法弄清楚问题。 您可以尝试使用unwind segue,非常简单。

什么是Unwind segues以及如何使用它们?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM