Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 获取UINavigationBar委托以允许;“背”;,有一个漂亮的动画_Ios_Cocoa Touch_Uinavigationcontroller_Uinavigationbar - Fatal编程技术网

Ios 获取UINavigationBar委托以允许;“背”;,有一个漂亮的动画

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; } 现在,根据,保持导航栏和内容同步是应用程序的

iPhone上的场景:

用户点击后退按钮,
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
的单独导航栏,而不是使用它提供的那个?