转到另一个视图控制器

Posted

技术标签:

【中文标题】转到另一个视图控制器【英文标题】:Go to another Viewcontroller 【发布时间】:2014-06-05 12:47:49 【问题描述】:

在我的应用程序中,我需要通过单击按钮转到另一个 UIViewController,但是当我在新的 UIViewController 中执行此操作时,它只显示我以编程方式设置的内容。

我用过:

NewSubject *NewS = [[NewSubject alloc] initWithNibName:nil bundle:nil];
[self presentViewController:NewS animated:YES completion:nil];

"NewSubject"UIViewController 我也需要去,但是我希望计算机也能显示我通过Storyboard 设置的内容。

【问题讨论】:

如果您想要情节提要配置,请使用情节提要来实例化您的视图控制器。 (instantiateViewControllerWithIdentifier:) 使用这个链接这是对你的希望***.com/questions/23102978/… 【参考方案1】:

您是否已在 Storyboard、NewSubject 视图控制器的第三个选项卡(显示身份检查器)中设置 StoryBoard ID?

您应该将其设置为某个名称,例如"NewSubject",并按如下方式使用:

NewSubject *NewS = [self.storyboard instantiateViewControllerWithIdentifier:@"NewSubject"];
[self.navigationController pushViewController:NewS animated:YES];

【讨论】:

这有什么帮助?他们使用的是故事板而不是笔尖。所以他们需要使用instantiateViewControllerWithIdentifier: 我可能会做NewSubject *newS = (NewSubject *)[self.storyboard instantiateViewControllerWithIdentifier:@"NewSubject"]; 注意newS 变量的小写,这是遵守约定并注意转换为NewSubject 类。 谢谢,帮了大忙;) 没问题,很高兴我能帮上忙 =)。我同意,大力水手只是想坚持他的代码,但我应该在接下来的答案中更加注意,谢谢你的提示。【参考方案2】:

我希望计算机也能显示我在情节提要中设置的内容。

如果您使用情节提要,-initWithNibName:bundle: 是错误的使用方法。您可以使用 UIStoryboard 的 -instantiateViewControllerWithIdentifier: 方法来创建在故事板中定义的新视图控制器,但更典型的方法是让您的按钮触发两个视图控制器之间的转场。

试试这个:

在编辑情节提要时,按住 Control 从按钮拖动到新的视图控制器。应该会出现一个弹出菜单,让您可以选择视图控制器之间的转换方式——推送(将新控制器推送到导航堆栈的顶部)、模态(以模态方式显示视图控制器)等。选择合适的.

在简单的情况下,您就完成了 - 无需编写任何代码来实现转换。 segue 负责创建新的视图控制器并为您执行转换。但是,您通常希望将一些数据从现有视图控制器传递到新视图控制器。如果是这种情况,请在现有的视图控制器中实现-prepareForSegue:sender:——这个方法让你有机会传递你需要的任何数据。它看起来像这样:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    // It doesn't hurt to check that it's the segue that you expect
    if ([segue.identifier isEqualToString:@"MySegueIdentifier"]) 
        NewViewController *newVC = segue.destinationViewController;
        // This is your chance to set properties or call methods to pass data to the new view controller
        newVC.foo = self.foo;
        newVC.bar = self.bar;
    

【讨论】:

以上是关于转到另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在不发送错误的情况下使按钮转到另一个视图控制器?

如何临时转到另一个视图来创建实体

Facebook iOS SDK - 跳转到另一个视图

tableview segue 到另一个视图控制器

单击按钮将项目添加到另一个视图控制器表视图

如何快速将一个视图控制器值发送到另一个视图控制器表视图?