无法实例化新控制器

问题描述:

我想在验证登录用户名/密码时加载新的ViewController/View。我有以下几点:无法实例化新控制器

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
... 
... 
ViewController *Workflow = [self.storyboard  instantiateViewControllerWithIdentifier:@"Workflow"]; 
     [self.navigationController pushViewController:Workflow animated:YES]; 

然后,在故事板,我添加了一个新的视图控制器,拍拍上有一个新的UIView。然后,我将ViewController的标识符更改为“Workflow”。但是,点击这个按钮后,什么也没有发生。有任何想法吗?

我会首先NSLog发送动作的按钮的索引,它对于长时间警报非常有用,并使用switch语句委托方法。如果什么都没有发生,那么通常没有做任何事情。

听起来好像你可能会错过故事板中的UINavigationController。除非你的视图控制器存在于UINavigationController中,否则pushViewController:将不起作用。

如果是这样的话,你需要做的是:从对象库

  • 拖动的UINavigationController的一个实例到你的故事板。删除它附带的根视图控制器。
  • 在故事板上选定导航控制器后,单击属性检查器上名为“初始视图控制器”的复选框。
  • 按住键盘上的Control键并将鼠标从导航控制器拖到第一个视图控制器(大概是显示警报视图的控制器)以创建一个Segue。在发布后出现的Storyboard Segues框中,选择“Relationship - Root View Controller”
+0

感谢您的简洁回复。我已经将一个导航控制器作为根控制器添加到了我正在使用的视图中。我应该添加一个新的ViewController到导航控制器?如果我按照您所描述的方式运行程序,在按下触发所有按钮的按钮后,它会冻结,并且在autorelease/ return UIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegate class] )); 我的main.m.中的代码行 – DrTchocky 2012-02-22 01:57:04

+0

我应该注意到输出结果如下: 2012-02-21 18:11:22.331 HMG [14991:f803] ***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因是:'推动导航控制器不受支持' – DrTchocky 2012-02-22 02:12:01

+0

导航控制器应该是您的APP的初始视图控制器,即故事板中的第一个箭头应指向此视图控制器,并且复选框是属性检查器中的初始视图控制器应检查(即说,做同样的事情的两种方式。)你应该推动你的自定义视图控制器(在你的例子中'工作流程')。它本身不应该是一个导航控制器。 – jonkroll 2012-02-22 06:26:09