如何消除UISplitViewController应用程序中的后栏按钮动画?

时间:2012-10-29 21:07:15

标签: ios uinavigationcontroller uinavigationbar uisplitviewcontroller uiviewanimation

在非IUSplitViewController应用程序中,我可以通过将其添加到我的UIApplicationDelegate类头来禁止默认的后栏动画:

@interface MyNavigationBar : UINavigationBar { } @end
@interface MyNavigationController : UINavigationController { } @end

以及相应的.m:

@implementation MyNavigationController
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
    return( [super popViewControllerAnimated:NO] );
}
@end

@implementation MyNavigationBar
- (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated
{
    return( [super popNavigationItemAnimated:NO] );
}
@end

当然,我还在Interface Builder中将MainWindow.xib中的导航控制器和导航栏对象分别分配给MyNavigationController和MyNavigationBar。

这就像标准应用程序中的魅力一样。

我的问题是在UISplitViewController应用程序中实现相同的功能。

具体来说,我无法弄清楚如何在这种情况下覆盖UINavigationBar的默认行为,以便在通过后退栏按钮弹出视图控制器时抑制导航栏的动画。

每当我将UIViewController实例化为UISplitViewController右窗格的根目录时, 可以覆盖UINavigationController的行为:

[split is a pointer to my UISplitViewController]

MyNavigationController *nc = (MyNavigationController *) [split.viewControllers objectAtIndex:1];
nc = [[[MyNavigationController alloc] initWithRootViewController:someController] autorelease];
split.viewControllers = [NSArray arrayWithObjects: [split.viewControllers objectAtIndex:0], nc, nil];
split.delegate = someController;

回顾一下,当我点击我的UISplitViewController应用程序中的后栏按钮时,活动视图控制器的内容区域在通过后栏按钮弹出时不会动画,但导航栏会设置动画,这看起来很糟糕。

我在本论坛中找到了标准应用案例的解决方案,但未提及UISplitViewController解决方案。

我尝试在MyNavigationController中覆盖initWithCoder,以将一个MyNavigationBar实例分配给navigationBar属性,但它不会让我,因为它是只读的。

难住了。

0 个答案:

没有答案