iphone - 尝试刷新 View Controller 时黑屏

标签 iphone ios objective-c

我正在为 iPhone 开发一款单词搜索益智游戏,并尝试为该应用程序实现一个重启按钮。重新启动按钮应该能够初始化新的 View Controller 、生成新的谜题并显示新的谜题。

到目前为止,在益智游戏 View 中,我有一个按钮,单击它会使用模态转场打开暂停菜单 View 。(暂停菜单有三个按钮,恢复,重新启动,主菜单。)然后我使益智游戏 Controller 成为暂停菜单的代表,在按下按钮时接收通知。恢复和主菜单按钮可以工作,但我在使用重新启动按钮重新加载 View 时遇到问题。该谜题位于容器 View 内,该 View 具有一个创建网格并显示字母的集合 Controller 。

使用我当前的代码,当我单击重新启动按钮时,我看到的只是一个黑屏,仅显示导航栏。但是,一旦我单击暂停菜单按钮(位于导航栏中),然后单击暂停菜单中的恢复按钮,我就会看到包含新生成的谜题的 View 。

下面是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


    }

有人知道为什么它显示黑屏吗?提前致谢

最佳答案

我不确定这是否足够的代码来解决您的问题..

但我对此的担忧是: 为什么重启时“nil” self.view ?如果这样做, View 将为“nil”,因此不会显示任何内容,与 puzzleInstance.view 相同。

您可以在 viewDidUnload 上为此取消/释放内存,因为 View 将在 viewDidLoad 上再次设置,但通常我只是“nil”/“dealloc”任何属性、 socket 等(在 viewDidUnload 或 dealloc 上,具体取决于我在哪里设置/重新设置它们)而不是 View 本身。 “setNeedsDisplay”只会“重绘” View ,但如果它为零,恐怕没有什么可以重绘的。所以我很确定这就是你的问题。

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

关于iphone - 尝试刷新 View Controller 时黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15726698/

相关文章:

iPhone:从iPhone库导入视频

ios - iOS SKMaps架构错误

ios - 警报每次都会打开,而不仅仅是第一次

objective-c - 获取 NSTableView 以注册 PNG 源中的 drop

ios - CoreData : Fetch and sort results in the order they were created, 不使用时间戳

java - Objective C 中的类对象

iphone - 如何消除 Storyboard

iphone - 确定 iPhone 上的 EDGE 连接断开后何时恢复

iphone - 动画 UIButton 状态更改

ios - 我需要一种方法来创建更多硬币并在玩家收集硬币或硬币离开屏幕时将其移除