如何加载视图控制器没有button在故事板?

我想加载没有button的视图控制器。 我把标识符设置为10,并尝试使用

if(...){ //load ViewController2 UIViewController *vc = [[self storyboard] instantiateViewControllerWithIdentifier:@"10"]; [self.navigationController pushViewController:vc]; } 

这里是我的progect http://www.sendspace.com/file/kfjhd5

什么是问题?

上面的代码在你的问题是好的。 我知道你问的是如何做到这一点没有button,但你的演示的问题是,你使用了一个button,但没有正确地把它连接到IBAction 。 你的goNext应该在你的.h中定义为:

 - (IBAction)goNext:(id)sender; 

实施应该是:

 - (IBAction)goNext:(id)sender { UIViewController *vc=[[self storyboard] instantiateViewControllerWithIdentifier:@"10"]; [self.navigationController pushViewController:vc animated:YES]; } 

我认为你手动创build了这个IBAction 。 在将来值得注意的是,如果您从button控制 (或右键单击拖动)到助手编辑器文件,您可以自动创build您的IBAction接口,这种错误不会发生:

自动创建IBAction


顺便说一下,我个人喜欢用segue,所以我首先定义视图控制器之间的push segue。 在Xcode 6中,可以控制从场景上方的视图控制器图标到目标场景的-drag:

创建segue xcode 6

在6之前的Xcode版本中,可以控制场景下面栏中的视图控制器图标的-drag:

创建segue

然后,我在Interface Builder中selectsegue并给它一个“storyboard identifier”(在这个例子中,我称之为pushTo10 ):

指定segue id

然后,我的goNext执行该segue,而不是手动调用pushViewController

 - (IBAction)goNext:(id)sender { [self performSegueWithIdentifier:@"pushTo10" sender:self]; } 

这样做的好处是,我的故事板现在可视化地代表了我的应用程序的stream程(而不是看起来有一个场景漂浮在那里)和像导航栏这样的graphics元素在故事板中正确表示。

你不必这样做,但是它是另一种可以被意识到的select。