我想加载没有按钮的视图控制器。我将标识符设置为10并尝试使用
if(...){
//load ViewController2
UIViewController *vc = [[self storyboard] instantiateViewControllerWithIdentifier:@"10"];
[self.navigationController pushViewController:vc];
}
这是我的progect http://www.sendspace.com/file/kfjhd5
是什么问题?
答案 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
接口,并且不会发生这种错误:
顺便说一下,我个人喜欢使用segue,所以我首先定义视图控制器本身之间的推送segue。在Xcode 6中,可以从场景上方的视图控制器图标 control -drag到目标场景:
在6之前的Xcode版本中,可以从场景下方栏中的视图控制器图标 control -drag:
然后我在Interface Builder中选择segue并给它一个“故事板标识符”(在本例中,我称之为pushTo10
):
然后让我的goNext
执行segue,而不是手动调用pushViewController
:
- (IBAction)goNext:(id)sender
{
[self performSegueWithIdentifier:@"pushTo10" sender:self];
}
这样做的好处是,我的故事板现在可视化地表示我的应用程序的流程(而不是看起来有一个浮动的场景)和导航栏之类的图形元素在故事板中正确表示。
你不必这样做,但这是另一个需要注意的选择。