在我的某个应用中,我正在使用子类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
?我该如何解决?