Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将动画添加到视图更改_Ios_Xcode_Animation - Fatal编程技术网

Ios 将动画添加到视图更改

Ios 将动画添加到视图更改,ios,xcode,animation,Ios,Xcode,Animation,因此,经过大量研究,if最终找到了允许我更改到另一个视图而不给我任何错误的代码: UIViewController * vc = [self.storyboard instantiateViewControllerWithIdentifier:@"gameOverPage"]; [[[[UIApplication sharedApplication] delegate] window] setRootViewController:vc]; 这段代码唯一的问题是没有动画。如果可能的话,我想以某种

因此,经过大量研究,if最终找到了允许我更改到另一个视图而不给我任何错误的代码:

UIViewController * vc = [self.storyboard instantiateViewControllerWithIdentifier:@"gameOverPage"];
[[[[UIApplication sharedApplication] delegate] window] setRootViewController:vc];
这段代码唯一的问题是没有动画。如果可能的话,我想以某种方式添加交叉融合动画


另一个主要问题是,它将视图显示两次,有时显示三次。所以它转到第二个视图,然后不到一秒钟,它再次显示页面。我知道这一点,因为iAd已重新加载,当我按下转到另一页的按钮时,第二页再次出现会中断iAd。

要将视图更改为另一页,无需设置RootViewController:始终将其设置为根视图控制器

您可以使用UINavigationController并将UIViewController设置为根,然后使用pushViewController:导航控制器的方法更改视图,如

//Pre condition - already a viewController is root view controller of navigation controller.
UIViewController * vc = [self.storyboard instantiateViewControllerWithIdentifier:@"gameOverPage"];
[self.navigationController pushViewController:vc animted:YES];
另一种方式是,

[self presentViewController:vc animated:YES completion:nil];

阅读更多信息,

[self.navigationController-pushViewController:vc动画:是];不做任何事情和[自我呈现视图控制器:vc动画:是完成:无];向我发送此错误消息:警告:尝试显示不在窗口层次结构中的视图!从哪里调用presentViewController:vc?从viewDidLoad?不,我是在玩家输掉比赛的时候打电话。顺便说一句,我看过很多帖子,人们在viewDidLoad中使用presentViewController。为什么在当前视图刚刚加载时加载新视图?我找不出一个很好的理由。问题是,在发送viewDidLoad消息时,视图控制器的视图将不在窗口的视图层次结构中。因此,如何解决我现在遇到的这个问题?