我正在尝试单个按钮来加载不同的视图控制器 开始按钮的操作是:
-(IBAction)startApp:(id)sender{
switch (menuItem) {
case 1:
[self openPage1];
break;
case 2:
[self openPage2];
break;
case 3:
[self openPage3];
break;
case 4:
[self openPage4];
break;
default:
break;
}
}
menuItem 的值在别处设置,并且没有问题。 切换案例中的函数也可以在menuItem的不同值上正确调用。
-(void)openPage1{
Page1 * myPage1 = [[Page1 alloc] init];
[self.navigationController pushViewController:myPage1 animated:YES];
}
-(void)openPage2{
Page2 *myPage2 = [[Page2 alloc] init];
[self.navigationController pushViewController:myPage2 animated:YES];
}
-(void)openPage3{
Page3 *myPage3 = [[TableViewController alloc]init];
[self.navigationController pushViewController:myPage3 animated:YES];
}
-(void)openPage4{
Page4 *myPage4 = [[Page4 alloc]init];
[self.navigationController pushViewController:myPage4 animated:YES];
}
我导入了视图控制器的所有.h文件,所以这不是问题。
问题是所有 openPage#()方法都在执行,但是按下开始按钮时没有加载视图控制器等页面。
答案 0 :(得分:1)
视图控制器实际上是否有导航控制器?在其中一个openPage#方法中放置一个调试点,并检查self.navigationController
是否为零。
您可以在方法中停止调试器的同时在控制台中键入po self.navigationController
来执行此操作。
如果您没有在导航控制器中嵌入视图控制器,则无法使用navigationController属性。如果它是零,请做2件事之一:
使用[self presentViewController:myPage# animated:YES];
这将以模态方式设置视图控制器的动画。
将当前视图控制器放入导航控制器。我不知道你当前的视图控制器是如何呈现的,但基本上不是仅仅呈现视图控制器,而是先将它包装在UINavigationController中。假设此视图控制器是在app delegate中设置的根视图控制器:
MyViewController *myController = [MyViewController new];
UINavigationController *navController = [[UINavigationController alloc]
initWithRootViewController:navController];
self.window.rootViewController = navController;