在我的应用程序A->B->C中有三个VC (A和B中有一个带有SKScene的SKView )。
应运行以下方案:
一个(按下一个按钮)->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。此外,如果我第二次尝试从C->B转到,应用程序也会崩溃(有时会显示黑色视图,有时会崩溃)。
这是怎么回事?谢谢!
发布于 2013-10-22 07:30:46
如果不看你的代码,我很难知道,但是我有一个问题,因为我缓慢地关闭了Modal View Controller,但是用这种方式设置我的场景解决了我的问题。
@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。
https://stackoverflow.com/questions/19496087
复制相似问题