我知道还有很多其他问题,但它们并没有完全解释我的问题。
我从初始视图控制器SAGViewController
转到另一个SAGHomeScreenViewController
当按下相关按钮时,通过识别的故事板自定义segue:
-(IBAction)goNewGame{
[self performSegueWithIdentifier:@"startHomeSegue" sender:self];
}
它工作正常,但我仍然收到警告:
警告:尝试在SAGViewController上显示SAGHomeScreenViewController:0xc43b800:0xbaaa9f0,其视图不在窗口层次结构中!
如果我注释掉performSegueWithIndentifer
,则segue仍然有效,但我没有收到警告:
-(IBAction)goNewGame{
//[self performSegueWithIdentifier:@"startHomeSegue" sender:self];
}
为什么呢?请注意,我没有导航控制器。
这里的任何建议都会受到赞赏,segue仍然有效,但我不想要任何我不理解的警告!
答案 0 :(得分:9)
您应该删除该方法,并且应该在故事板中从按钮到第二个viewController建立连接。
// EXTENDED
如果要将某些内容传递到目标视图,请使用prepareForSegue:sender方法。 每次通过segue更改视图时都会调用此方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"YOURSEGUEIDENTIFIER"])
{
YourViewController *yourVC = [segue destinationViewController];
}
}
// EXTENDED
这种情况正在发生,因为您已经以两种方式连接了您的segue,一种是代码,另一种是故事板。你必须删除其中一个。您可以从代码中删除您的IBAction(因此您只需在故事板中连接),或者您可以删除故事板中的连接(从按钮到目标视图控制器)并再次添加它,但这次将其从源视图控制器中拖出(不是按钮)到目标视图控制器。不要忘记设置segue标识符。如果您使用故事板,我建议您从代码中删除您的IBAction,减少要管理的代码。 希望这有帮助。