伙计,我必须说如果不是这个网站,我会没有头发,我现在可能会从桥上跳下来。好的!我的问题:
我正在使用带有 xcode 4.4 的情节提要。我有 3 个视图控制器(确实有 5 个,但我认为其他的无关紧要)。视图控制器 A 推送到视图控制器 B。视图控制器 B 在其导航栏上有一个分段控件,带有 2 个分段和一个后退按钮。视图控制器 B 加载时选择了分段 1。当用户选择段 0 时,视图控制器 C 被实例化。在第一次推动时一切都很好。你从 A 被推到 B,然后当你按下它时它会弹出到 A。我的问题是当我 popToViewController 到包含视图控制器 A 的数组列表时,它会弹出,但它没有动画!我知道你在想什么,“Animate:YES dummy!” 然而,动画是是的……嗯?这是我的代码:
这是视图控制器 B 中发生的事情
-(IBAction)Previous:(id)sender{
[self.navigationController popViewControllerAnimated:YES];
}
- (IBAction)segmentSwitch:(id)sender;
{
if ([sender selectedSegmentIndex] == 0)
{
MapViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Map"];
[self.navigationController pushViewController:controller animated:NO];
}
else if ([sender selectedSegmentIndex] == 1) {
ListViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"List"];
[self.navigationController pushViewController:controller animated:NO];
}
}
继承人视图控制器C
-(IBAction)Previous:(id)sender
{
NSInteger index = -1;
ReportAppDelegate *appDelegate =
(ReportAppDelegate *)[[UIApplication sharedApplication]delegate];
MainOrangeTestViewController *orangeViewController = [appDelegate orangeViewController];
orangeViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Orange"];
NSArray* newVCarray = [[NSArray alloc] initWithObjects:orangeViewController, nil];
self.navigationController.viewControllers = newVCarray;
for(int i=0 ; i<[newVCarray count] ; i++)
{
if([[newVCarray objectAtIndex:i] isKindOfClass:NSClassFromString(@"MainOrangeTestViewController")])
{
index = i;
}
}
[self.navigationController popToViewController:[newVCarray objectAtIndex:index] animated:YES];
}
- (IBAction)segmentSwitch2:(id)sender; {
if ([sender selectedSegmentIndex] == 0)
{
MapViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Map"];
[self.navigationController pushViewController:controller animated:NO];
}
else if ([sender selectedSegmentIndex] == 1)
{
ListViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"List"];
[self.navigationController pushViewController:controller animated:NO];
}
}
我知道当您实例化时,您正在创建该视图控制器的新实例以及创建新的导航堆栈(或类似的东西)。我想这可能与它有关。无论如何,为什么它不为流行音乐制作动画?我希望在我当前的构建中实现一些东西,但是如果它需要重建,那就这样吧!任何帮助是极大的赞赏。我肯定已经在这方面完成了我的功课,但是没有解决方案。
提前感谢大家!
编辑:我应该补充一点,从视图控制器 B 返回到 A 的初始 POP 是动画的。但是,当您开始切换分段控件并且切换到视图控制器 C 时,返回视图控制器 A 不会为弹出设置动画。因此,最初当您从 A 加载到 B 时,它会以成功的动画弹回。但是在切换之后它会弹回到没有动画的 A 并且动画方法是 YES。