在我的iOS应用程序中,我在
Xcode中使用带有segues设置的UINavigationController.对于其中一个视图,我想隐藏导航栏,而对于其他视图,我希望它显示出来.我能够在主视图中成功隐藏条形图,然后在我切换到下一个视图时很好地为其设置动画,但当我返回时(使用导航栏中的后退按钮),条形图消失,留下黑色矩形,然后切换回上一个视图.我希望能够通过与prepareForSegue相反的方式捕捉到这一点,并且很好地为导航栏设置动画.有办法做到这一点吗? 最佳答案 目前还没有prepareForDesegue:sender:prepareForSegue的替代方案:sender:.建议的做法是在目标ViewController中建立一个引用返回源ViewController.然后,当目标ViewController被解除时,它可以通知源ViewController它将再次成为顶级ViewController.
通常,引用是在prepareForSegue:sender:中建立的.
因此,为了使这个具体化,让我们假设你有ViewControllerA,并且即将转向ViewControllerB.在ViewControllerB中,您将定义一个引用ViewControllerA的属性. (这通常使用协议来完成,但为了简化,只需假设ViewControllerB具有@property ViewControllerA *委托;.)
然后,在prepareForSegue:sender:中,您将执行以下操作:
ViewControllerB * vcB = (ViewControllerB *)[segue destinationViewController];
vcB.delegate = self;
稍后,在ViewControllerB中,无论代码是什么让你回到ViewControllerA,你都会使用self.delegate来回到ViewControllerA,让它知道它即将被呈现,并让它有机会做你需要的任何事情.使用UINavigationBar.