如何在故事板中加载没有按钮的viewcontroller?

时间:2012-09-19 17:16:45

标签: ios xcode storyboard

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

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

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

是什么问题?

1 个答案:

答案 0 :(得分:10)

您问题中的上述代码很好。我知道你问的是如何在没有按钮的情况下做到这一点,但你演示的问题是你使用了一个按钮,但没有正确地将它连接到IBAction。您的goNext应在.h中定义为:

- (IBAction)goNext:(id)sender;

实施应该是:

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

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

automate creation of IBAction


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

create segue xcode 6

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

create segue

然后我在Interface Builder中选择segue并给它一个“故事板标识符”(在本例中,我称之为pushTo10):

specify segue id

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

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

这样做的好处是,我的故事板现在可视化地表示我的应用程序的流程(而不是看起来有一个浮动的场景)和导航栏之类的图形元素在故事板中正确表示。

你不必这样做,但这是另一个需要注意的选择。