【问题标题】:How to do push segue through a button from one view controller to another?如何通过按钮从一个视图控制器推送到另一个视图控制器?
【发布时间】:2012-12-22 03:19:00
【问题描述】:

我是 Objective C 的新手,我一直在尝试使用从一个视图控制器到另一个视图控制器的按钮进行 Segue。我希望为 segue 使用 push 类型,第一个视图控制器嵌入在导航视图控制器中。下面是第一个视图控制器的 .m 和 .h 文件。

firstViewController.m

@implementation

**(am I supposed to have an IBAction here for the pressed button?)**

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

    if ([segue.identifier isEqualToString:@"firstSegue"]) {

    **( I don't know what to put here)**    

    }
}
@end

firstViewController.h

@interface firstViewController : UIViewController



@end

【问题讨论】:

    标签: objective-c segue


    【解决方案1】:

    如果您已将按钮本身连接到 segue(ctrl + 从按钮拖动到界面构建器中的第二个视图控制器),那么您将不需要 IBAction。只要您的视图控制器与导航控制器正确关联,只需以这种方式连接 segue 就足以执行从第一个视图控制器到第二个视图控制器的推送动画 - 您无需编写任何代码全部。

    prepareForSegue 方法的目的是将数据传递给目标视图控制器,设置委托等。如果您没有数据要传递给第二个视图控制器,或者在该控制器中没有要配置的内容,那么您不需要实现prepareForSegue。您可以在线搜索 storyboard segue delegate 等术语,找到一些教程 like this,这些教程描述了使用 prepareForSegue 和其他故事板功能来管理视图控制器之间的转换的一些最佳实践。

    【讨论】:

    • 我尝试按照您的建议进行操作。所以,我制作了一个名为 firstViewController 的视图控制器。将新的视图控制器(第二个视图控制器)拖到情节提要后,我创建了一个新文件,一个名为 secondViewController 的目标 C 类,类型为 UIViewController。然后我确定这个视图控制器的类名是 secondViewController。设置完这些视图控制器后,我将一个按钮从 firstViewController 连接到 secondViewController。最后,我单击了 firstViewController 并嵌入了导航视图控制器。编译器运行成功了,
    • 我从 main.m 文件中突出显示了这一行“return UIApplicationMain(argc, argv, nil, NSStringFromClass([DiscountWalletAppDelegate class]));”以及该突出显示的是一个标记说:“线程 1:信号 SIGABRT”。这是什么意思?
    • 这出现在我点击模拟器上的按钮后。
    • 哟!已经想通了。我已经成功完成了segue。但是,我的 secondViewController 没有显示它的内容(标签、文本字段)。基本上,它显示了一个黑屏,左上角有一个后退按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多