【问题标题】:How to switch views using UIStoryboard and UIViewcontroller如何使用 UIStoryboard 和 UIViewcontroller 切换视图
【发布时间】:2013-11-14 17:45:04
【问题描述】:

我对 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];

}

【问题讨论】:

  • 您确定您的标识符正确吗?在您的故事板中,您是否单击了视图控制器并设置了故事板 ID?
  • 是的,我的故事板 ID 是 MenuStoryboard

标签: objective-c xcode uiviewcontroller uistoryboard


【解决方案1】:

首先进入情节提要,然后将共享按钮与要显示的视图连接起来。之后,您使用标识符命名此 segue。

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

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

(mySegueIdentifier 是你之前使用的Identifier)

【讨论】:

  • 正是我想要的。谢谢!
【解决方案2】:

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

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

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

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

Apple 有一个示例项目,您可以下载以详细了解此工作流程 (MultipeerGroupChat)

希望这会有所帮助。

【讨论】:

  • 我可以从一个按钮到视图控制器的 Ctrl+拖动,而不是从一个视图控制器执行 Ctrl+Drag 到下一个视图控制器
  • @ErvNoel - Xcode 5 中没有。不再有从按钮拖动到 vc 的方法。当前正确的方法允许您在 vc 到 vc 之间拖动,并在按钮的操作方法中使用 performSegueWithIdentifier... 引用命名的 segue。
猜你喜欢
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多