在我的一个应用程序中,我使用子类来从右向左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
数组中的第一个也被删除了?我该如何解决?