我在使用UINavigationController的iPhone应用程序时遇到问题.当我使用pushNavigationController时,它工作正常.iPhone切换到下一个ViewController时会动画.但是当使用ViewControllers数组和setViewControllers方法时,它在动画中有一个小故障,它可以变成一个清晰可见的动画bug.
在根ViewController中调用以下代码段.根据条件,它应该切换到ViewController1,或者它应该直接转到ViewController2.在后一种情况下,用户可以导航回vc1,然后导航到根.
NSMutableArray* viewControllers = [NSMutableArray arrayWithCapacity:2];
// put us on the stack
[viewControllers addObject:self];
// add first VC
AuthentificationViewController* authentificationViewController =
[[[AuthentificationViewController alloc] initWithNibName:@"AuthentificationViewController" bundle:nil] autorelease];
[viewControllers addObject:authentificationViewController];
if (someCondition == YES)
{
UserAssignmentsListViewController* userAssignmentsListViewController =
[[[UserAssignmentsListViewController alloc] initWithNibName:@"UserAssignmentsOverviewViewController" bundle:nil] autorelease];
[viewControllers addObject:userAssignmentsListViewController];
}
[self.navigationController
setViewControllers:[NSArray arrayWithArray:viewControllers] animated:YES];
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我将第一个也许是第二个VC添加到数组中,最后使用动画设置navigationController堆栈.如果我只添加第一个控制器,这可以正常工作.但是在动画应该转到第二个控制器的情况下,导航栏的标题将不会"飞入".相反,在动画结束之前会有一个空标题.而且,更糟糕的是,如果我用自定义按钮替换导航栏标题,此按钮将显示在左上角,直到动画完成.那是一个很明显的错误.
我尝试使用多个pushViewController方法的解决方法,但动画看起来/感觉不对.我希望导航以与pushViewController相同的方式进行动画制作.这里唯一的区别是,我不添加VC,而是立即设置整个堆栈.这里有另一种解决方法,还是可以将其视为框架的错误?我想只使用pushNavController for VC2,然后以某种方式将VC1插入堆栈,但这似乎不可能.
感谢您的所有提示和建议.:-)
技术数据:我使用的是iOS 4.2,编译为4.0.