在我的iOS应用中,我使用的是带有Xcode中的segues设置的UINavigationController。对于其中一个视图,我想隐藏导航栏,对于其他视图,我想显示它。我能够成功在主视图中隐藏该栏,然后在选择下一个视图时很好地对其进行动画处理,但是当我返回时(使用导航栏中的“后退”按钮),该栏消失了,留下了黑色矩形,然后切换回上一个视图。我希望能够使用prepareForSegue的相反方法来捕捉到这一点,并很好地为导航栏设置动画。有什么办法可以做到这一点?
最佳答案
当前没有prepareForDesegue:sender:
可以替代prepareForSegue:sender:
。建议的做法是在目标ViewController
中建立对源ViewController
的引用。然后,当目标ViewController
被取消时,它可以通知源ViewController
它即将再次成为顶部ViewController
。
通常,引用是在prepareForSegue:sender:
中建立的。
因此,为了具体起见,我们假设您拥有ViewControllerA
,并且即将选择ViewControllerB
。在ViewControllerB
中,您将定义一个引用ViewControllerA
的属性。 (通常使用协议来完成此操作,但为了简单起见,只需假设ViewControllerB
具有@property ViewControllerA *delegate;
即可。)
然后,在prepareForSegue:sender:
中,您将执行以下操作:
ViewControllerB * vcB = (ViewControllerB *)[segue destinationViewController];
vcB.delegate = self;
稍后,在
ViewControllerB
中,无论要使用哪种代码使您回到ViewControllerA
,您都可以使用self.delegate
来回到ViewControllerA
,让它知道它即将被呈现,并为它提供机会使用UINavigationBar
。