转到另一个视图控制器
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;
【讨论】:
以上是关于转到另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章