UINavigationController popViewController错误

时间:2013-10-21 13:36:59

标签: uinavigationcontroller sprite-kit

我的应用程序中有三个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(有时它显示黑色视图,有时会崩溃),应用程序也会崩溃。

发生了什么事? 谢谢!

1 个答案:

答案 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。