0

我的应用程序 A->B->C 中有三个 VC(A&B 有 SKView,其中有一个 SKScene)。

应该运行以下场景:
A(按下按钮)->B(播放场景,完成)->C(几个按钮和UILabel,也从游戏中心加载信息)。当我从 C->A (popToRootViewController) 弹出时,一切正常(尽管我认为曾经见过一次内存泄漏)。

问题是当我按下一个从 C->B 执行 popViewController 的按钮时。

在第一次工作时,B 再次加载,而当涉及到 C 时,第二次UIView动画将无法工作。同样,当 I 时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 切换,应用程序也会崩溃(有时它会显示黑色视图,有时会崩溃)。

怎么了?谢谢!

4

1 回答 1

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。

于 2013-10-21T23:30:45.627 回答