我有两个xib文件。我从“ViewController.xib”开始,当用户单击一个按钮时,它会加载一个名为“GamePage.xib”的不同xib文件。
按钮的代码是:
-(IBAction)startButtonClicked{
UIViewController *gamePage = [[UIViewController alloc] initWithNibName:@"GamePage" bundle:nil];
[self presentViewController:gamePage animated:NO completion:nil];
}
单击该按钮时,屏幕上会显示第二个xib,但其“viewDidLoad”方法不会运行...
为什么?
答案 0 :(得分:2)
UIViewController *gamePage = [[UIViewController alloc] initWithNibName:@"GamePage" bundle:nil];
这似乎不正确。
viewDidLoad
可能正在运行,但它是Apple viewDidLoad
的{{1}}。初始化时,您应该使用您的类而不是UIViewController
。通常,您应该使用您需要调用viewDidLoad的类。
答案 1 :(得分:1)
您的XIB必须拥有其所有者。您需要创建一个派生自UIViewController的类,然后您需要创建XIB的类所有者。 只需按照以下步骤操作:
现在,如果您必须移动到此类并显示其视图,请编写以下代码:
-(IBAction)startButtonClicked{
GameViewController *gamePage = [[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil];
[[self navigationController] pushVIewController:gamePage animated:YES];
[gamePage release]; //If not used ARC
}