Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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 如何消除UISplitViewController应用程序中的后栏按钮动画?_Ios_Uinavigationcontroller_Uinavigationbar_Uisplitviewcontroller_Uiviewanimation - Fatal编程技术网

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

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

在非IUSplitViewController应用程序中,我可以通过将其添加到我的UIApplicationLegate类标题中来抑制默认背栏动画:

@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属性,但它不允许,因为它是只读的

难倒了