尝试刷新视图控制器时出现黑屏

时间:2013-03-31 05:37:48

标签: iphone ios objective-c

我正在为iphone开发一个单词搜索益智游戏,我正在尝试为应用程序实现一个重启按钮。重启按钮应该能够初始化新的视图控制器,生成新的拼图,并显示新的拼图。

截至目前,在益智游戏视图中,我有一个按钮,点击它会打开暂停菜单视图使用模态segue。(暂停菜单有三个按钮,恢复,重启,主菜单。)然后我使得益智游戏控制器成为暂停菜单的代表,当按下按钮时接收通知。恢复和主菜单按钮工作,但我无法使用重启按钮重新加载视图。这个谜题位于一个容器视图中,它有一个集合控制器,可以创建网格并显示字母。

使用当前的代码,当我点击重启按钮时,我只看到一个只显示导航栏的黑屏。但是,一旦我点击暂停菜单按钮(位于导航栏中),然后单击暂停菜单中的恢复按钮,我就会看到带有新生成拼图的视图。

下面是pauseMenuController中的代码:

- (IBAction)IBARestart:(id)sender {
         [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
         [self.delegate goToRestart];
      }

现在这里是我的puzzleGameController中的代码:

  -(void)goToRestart{        
     self.view = nil;
     [self.view.window setNeedsDisplay];

    PuzzleCollectionControllerViewController *puzzleInstance = [self.childViewControllers lastObject]; 
        puzzleInstance.view = nil; 
        [puzzleInstance.view setNeedsDisplay]; // I tried reloading the cointainer view too, but it still shows black screen


    }

任何人都知道为什么会出现黑屏?在此先感谢

1 个答案:

答案 0 :(得分:1)

我不确定这是否足以解决您的问题..

但我对此的担忧是: 你重新开始为什么“nil”self.view?如果这样做,视图为“nil”,因此不会显示任何内容,对于puzzleInstance.view也是如此。

你可以在viewDidUnload上为这个内存暂空/释放,因为视图将在viewDidLoad上再次设置,但通常我只是“nil”/“dealloc”任何属性,出口等(在viewDidUnload或dealloc上,取决于我设置/重新设置它们的地方而不是视图本身。 “setNeedsDisplay”只是“重绘”视图,但如果它是零,我恐怕没有什么可以重绘的。所以我很确定这是你的问题。

当您按“继续”(代码?)时,有什么不同或发生了什么。

相关问题