【问题标题】: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:)
  • 使用这个链接这是对你的希望stackoverflow.com/questions/23102978/…

标签: ios objective-c uiviewcontroller uibutton


【解决方案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;
    }
}

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2016-09-06
    • 1970-01-01
    相关资源
    最近更新 更多