UINavigationController子类在iOS7上的行为不同,从self.viewcontrollers中删除ViewControllers

时间:2013-09-22 10:09:38

标签: ios objective-c uinavigationcontroller ios7

在我的某个应用中,我正在使用子类UINavigationController,以便从右到左推送ViewControllers,而不是从左到右。我正在使用下一个代码来替换pop和push动画来实现这一目标。它在iOS 7以下的所有iOS上都运行良好。

这是我的代码的相关部分:

UINavigationController子类:

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    // Add the viewController and a fake controller without animation. Then pop the fake controller with animation.
    UIViewController *fakeController = [[UIViewController alloc] init];
    [super setViewControllers:[[self viewControllers] arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:viewController, fakeController, nil]] animated:NO];
    NSLog(@"Log1: %d",[self.viewControllers count]);
    [super popViewControllerAnimated:animated];
    NSLog(@"Log2: %d",[self.viewControllers count]);
    [self performSelector:@selector(test) withObject:Nil afterDelay:5];
}

-(void)test
{
      NSLog(@"Log3: %d",[self.viewControllers count]);
}

在iOS 6上向下,日志将显示:

Log1:3
Log2:2
Log3:2

在iOS 7上,日志会显示:

Log1:3
Log2:2
Log3:1 //<---This is my problem

为了更加确定这是因为iOS 7,我创建了一个包含3个空Viewcontrollers和一个子类UINavigationController以及上述方法的新项目。我在iOS 7和iOS 6上的结果仍然不一样。

为什么还删除了数组中的第一个ViewController?我该如何解决?

0 个答案:

没有答案