0

我试图处理这个问题太久了。请给我你的任何想法。

我通过发送本地通知从 SKScene 呈现视图控制器。[[NSNotificationCenter defaultCenter] postNotificationName:@"closeScene" object:nil];

通知在开始视图控制器中处理。

- (void)viewDidLoad{ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeScene) name:@"closeScene" object:Nil];
[super viewDidLoad];}

然后:

-(void)closeScene {
//Remove the SKView, or present another viewController here.
constructionViewController *view = [[constructionViewController alloc] init];
[self presentViewController:view animated:YES completion:nil];

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"closeScene" object:nil];

}

每次发送通知时,我都会收到警告:

 Warning: Attempt to present <constructinoViewController: 0x10ae64160> on <constructinoViewController: 0x10ab329d0> whose view is not in the window hierarchy!

任何帮助都将不胜感激。先感谢您!

4

1 回答 1

0

何时被closeScene调用,确切地说 -在被调用之前之后 viewDidAppear

您看到的错误通常发生在您尝试在父级实际显示在屏幕上之前呈现视图控制器时。通常这是因为您在调用presentViewControllerviewDidAppear方法之前调用了该方法。

尝试添加一个日志语句,viewDidAppear并查看它是否出现在“视图不在窗口层次结构中”错误之前或之后的日志中。如果它出现在您知道问题所在以及如何解决它之后(确保presentViewController仅在显示父视图控制器后调用)。如果之前你可能有一个完全不同的问题......

于 2014-03-16T01:56:27.023 回答