Ios 如何消除UISplitViewController应用程序中的后栏按钮动画?
在非IUSplitViewController应用程序中,我可以通过将其添加到我的UIApplicationLegate类标题中来抑制默认背栏动画:Ios 如何消除UISplitViewController应用程序中的后栏按钮动画?,ios,uinavigationcontroller,uinavigationbar,uisplitviewcontroller,uiviewanimation,Ios,Uinavigationcontroller,Uinavigationbar,Uisplitviewcontroller,Uiviewanimation,在非IUSplitViewController应用程序中,我可以通过将其添加到我的UIApplicationLegate类标题中来抑制默认背栏动画: @interface MyNavigationBar : UINavigationBar { } @end @interface MyNavigationController : UINavigationController { } @end 在相应的.m中,还包括: @implementation MyNavigationController
@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
当然,我还将MainWindow.xib中的导航控制器和导航栏对象分别分配给Interface Builder中的MyNavigationController和MyNavigationBar
这就像标准应用程序中的一个符咒
我的问题是在UISplitViewController应用程序中实现同样的功能
具体地说,我不知道在这种情况下如何覆盖UINavigationBar的默认行为,以便在通过back bar按钮弹出视图控制器时抑制导航栏的动画
每当我将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应用程序中点击back bar按钮时,活动视图控制器的内容区域在通过back bar按钮弹出时不会动画,但导航栏会动画,这看起来很愚蠢
我在这个论坛上找到了标准应用程序案例的解决方案,但没有提到UISplitViewController解决方案
我尝试在MyNavigationController中重写initWithCoder以将MyNavigationBar的实例分配给navigationBar属性,但它不允许,因为它是只读的
难倒了