1

在我的一个应用程序中,我使用子类来从右向左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 个空的 Viewcontroller 和一个子类UINavigationController以及上述方法。我在 iOS 7 和 iOS 6 上仍然得到不同的结果。

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

4

0 回答 0