Ios 获取UINavigationBar委托以允许;“背”;,有一个漂亮的动画
iPhone上的场景: 用户点击后退按钮,Ios 获取UINavigationBar委托以允许;“背”;,有一个漂亮的动画,ios,cocoa-touch,uinavigationcontroller,uinavigationbar,Ios,Cocoa Touch,Uinavigationcontroller,Uinavigationbar,iPhone上的场景: 用户点击后退按钮,UINavigationBardelegate方法(在UINavigationController的子类中实现)返回YES,如下所示: - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item { // Verify stuff... return YES; } 现在,根据,保持导航栏和内容同步是应用程序的
UINavigationBar
delegate方法(在UINavigationController
的子类中实现)返回YES
,如下所示:
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
{
// Verify stuff...
return YES;
}
现在,根据,保持导航栏和内容同步是应用程序的责任,而实现同步的地方是委托方法
- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item
问题是,didPopItem
仅在导航栏的pop动画序列完成后调用,因此如果我在那里调用[self-popViewControllerAnimated:NO]
,最终结果是导航栏首先向后滑动,然后内容向后滑动
这看起来是错误的
如果我在委托shouldPop…
方法中调用导航控制器的pop…
,我会收到一条错误消息,大意是我正在重叠动画,并且最终状态不干净
所以我的问题是,有没有其他方法让UINavigationController更改内容,最好是使用与导航栏同步的漂亮动画,但不会在导航栏和导航控制器之间造成混淆
目标操作系统是iOS 4.2及更高版本
我知道我可以创建另一个左按钮来代替“后退”按钮,但我发现使用代理更干净,而且,我得到了一个“真正的”后退按钮,这正是我想要的。如果您使用的是UINavigationController,您不需要自己管理它。只需使用UINavigationController,您就可以省去很多麻烦。它将负责弹出内容视图和导航栏项目。尝试以下操作: 假设您有viewControllerA和viewControllerB。viewControllerA是第一个,不需要导航栏,而viewControllerB需要 在方法
view中,将在viewControllerA中出现,输入代码:
[self.navigationController setNavigationBarHidden:YES animated:YES];
当弹出viewControllerB时,可以使用动画来执行此操作。两个动画将自动同步
不知道这对iOS4.2是否有效,你想在导航栏的pop动画序列之前调用didPopItem方法,因为你在第三段中有Writer。你想做什么?请你明确你的第三段你认为你的主要问题是什么?为什么你要使用带有UINavigationController
的单独导航栏,而不是使用它提供的那个?