无法从单个UIButton加载不同的View Controller

时间:2014-03-29 20:00:59

标签: ios objective-c ios7 xcode5

我正在尝试单个按钮来加载不同的视图控制器 开始按钮的操作是:

-(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#()方法都在执行,但是按下开始按钮时没有加载视图控制器等页面。

1 个答案:

答案 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;