如何使用UIStoryboard和UIViewcontroller切换视图

时间:2013-11-14 17:45:05

标签: objective-c xcode uiviewcontroller uistoryboard

我仍然是Obj-C和iOS的新手,所以请耐心等待。在我的应用程序中,我试图实现一个共享按钮,在当前视图控制器中显示第二个视图。我正在学习本教程(http://www.youtube.com/watch?v=DZ3SyGInklQ),我遇到了一个问题,即开发人员使用initWithNibName而我正在使用故事板。我想知道为什么当我按下按钮时我的第二个视图没有出现。这可能非常明显,但我无法弄清楚。

这是我目前的一些代码:

Menu.h

//Share button
- (IBAction)shareButton:(id)sender;

Menu.M

- (IBAction)shareButton:(id)sender {

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MenuStoryboard" bundle:nil];
UIViewController *sharebuttonview = (UIViewController *)[storyboard instantiateViewControllerWithIdentifier:@"sharebuttonview"];


[self presentViewController:sharebuttonview animated:YES completion:NULL];

}

2 个答案:

答案 0 :(得分:0)

首先,您进入故事板,然后将“共享”按钮与要显示的视图相关联。之后,您使用标识符命名此segue。

您在IBAction中的Menu.M中写道:

[self performSegueWithIdentifier:@"mySegueIdentifier" sender:self];

(mySegueIdentifier是您之前使用的标识符)

答案 1 :(得分:0)

根据您对问题的描述,您可能希望执行手动segue,这允许您从任意数量的UI控件中打开目标视图控制器。与先前版本的Xcode相比,Xcode 5的工作流程发生了变化。您可能希望查看我的博客文章以了解其他tips,但实际上您需要打开故事板并从文档大纲视图中的一个视图控制器执行Ctrl +拖动到第二个视图控制器。

然后,您需要通过单击连接两个视图控制器的灰线中间的Segue来命名创建的segue,并更新身份检查器中的segue id。

在源视图控制器中,您应该可以进行任何操作调用[self performSegueWithIdentifier:@"MySegueID"];

此外,您可以向源视图控制器添加prepareForSegue方法,该方法允许您初始化信息并将信息传递给目标视图控制器。

Apple有一个示例项目,您可以下载该项目以详细查看此工作流程(MultipeerGroupChat

希望这有帮助。