我正在为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
}
任何人都知道为什么会出现黑屏?在此先感谢
答案 0 :(得分:1)
我不确定这是否足以解决您的问题..
但我对此的担忧是: 你重新开始为什么“nil”self.view?如果这样做,视图为“nil”,因此不会显示任何内容,对于puzzleInstance.view也是如此。
你可以在viewDidUnload上为这个内存暂空/释放,因为视图将在viewDidLoad上再次设置,但通常我只是“nil”/“dealloc”任何属性,出口等(在viewDidUnload或dealloc上,取决于我设置/重新设置它们的地方而不是视图本身。 “setNeedsDisplay”只是“重绘”视图,但如果它是零,我恐怕没有什么可以重绘的。所以我很确定这是你的问题。
当您按“继续”(代码?)时,有什么不同或发生了什么。