我的应用程序中有三个VC A-> B-> C(A& B有SKView,其中包含SKScene)。
应该运行以下场景:
A(按下按钮) - > B(播放场景,完成) - > C(几个按钮和UILabels,也从游戏中心加载信息)。
当我从C-> A(popToRootViewController)弹出时,一切正常(虽然我认为曾经看过一次内存泄漏)。
问题是当我按下一个从C-> B执行popViewController的按钮时。
在它第一次工作时,B再次加载,当涉及到C时,第二次UIView
动画将无效。此外,当我NSLog self.navigationController.viewControllers
时,它显示(当弹出C后从B-> C转换时)有2个C视图控制器 - 已创建两次C(从C-> B时删除它,然后创建两次)!
考虑这种情况:
AViewController: 0x17683d80,
BViewController: 0x1c956720
第二次加载B时(从C调用popViewController后),然后
"AViewController: 0x17683d80",
"BViewController: 0x1c956720",
"CViewController: 0x1ca49e40",
"CViewController: 0x1ca4c6c0"
第二次加载C后的NSLog'd。如果我第二次尝试从C-> B(有时它显示黑色视图,有时会崩溃),应用程序也会崩溃。
发生了什么事? 谢谢!
答案 0 :(得分:0)
很难知道如果没有看到你的代码,但是我遇到了一个缓慢解雇模态视图控制器的问题,但以这种方式设置我的场景解决了我的问题。
@implementation ViewController {
SKView *_skView;
}
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
if (!_skView) {
_skView = [[SKView alloc] initWithFrame:self.view.bounds];
_skView.showsFPS = YES;
_skView.showsNodeCount = YES;
SKScene * scene = [MyScene sceneWithSize:_skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[_skView presentScene:scene];
[self.view addSubview:_skView];
}
}
viewDidLayoutSubviews是如此横向具有正确的坐标,如果你是纵向只是保持原始设置。最重要的是拥有_skView iVar。