首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UINavigationController popViewController错误

UINavigationController popViewController错误
EN

Stack Overflow用户
提问于 2013-10-21 21:36:59
回答 1查看 446关注 0票数 0

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

这是怎么回事?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-10-22 07:30:46

如果不看你的代码,我很难知道,但是我有一个问题,因为我缓慢地关闭了Modal View Controller,但是用这种方式设置我的场景解决了我的问题。

代码语言:javascript
复制
@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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19496087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档