0

我正在为 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


    }

任何人都知道为什么它显示黑屏?提前致谢

4

1 回答 1

1

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

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

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

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

于 2013-03-31T05:57:04.770 回答