我有以下问题:我已经覆盖了UINavigationController的popViewControllerAnimated:(BOOL)animated,因为我想有一个自定义的动画。代码如下:
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
UIViewController *poppedCtrl = [super popViewControllerAnimated:NO];
[((customViewController *) self.topViewController) doCustomAnimation];
return poppedCtrl;
}不幸的是,UINavigationBar似乎忽略了我显式禁用内置动画,但它仍然是动画。
我必须做些什么才能同时阻止导航栏的动画?
发布于 2011-12-22 19:08:09
经过一些阅读和实验,我终于发现需要做些什么才能达到预期的行为。
要防止导航栏具有动画效果,仅覆盖(UIViewController *)popViewControllerAnimated:(BOOL)animated是不够的。
还需要创建自定义导航栏并覆盖(UINavigationItem *)popNavigationItemAnimated:(BOOL)animated
- (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated {
return [super popNavigationItemAnimated:NO];
}当然,此自定义导航栏也必须是所使用的导航栏(我刚刚在界面构建器中替换了导航控制器使用的导航栏)。
发布于 2015-10-28 04:29:40
如果有人想要禁用推送动画--这对我很有效,在UINavigationBar上重写这个方法:
- (void)pushNavigationItem:(UINavigationItem *)item {
NSMutableArray* items = [[self items] mutableCopy];
[items addObject:item];
self.items = items;
}https://stackoverflow.com/questions/8531165
复制相似问题