如何通过按钮从一个视图控制器到另一个视图控制器执行推送转场?

3
我是一个新手,正在学习Objective C,并尝试使用按钮从一个视图控制器跳转到另一个视图控制器。我希望使用推送类型的segue,其中第一个视图控制器嵌入在导航视图控制器中。下面是第一个视图控制器的.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
1个回答

5
如果您已经将按钮本身连接到了segue(从按钮到界面构建器中的第二个视图控制器进行ctrl + drag拖动),那么您将不需要IBAction。只要您的视图控制器与导航控制器正确关联,仅以这种方式连接segue就足以从第一个视图控制器到第二个执行推送动画--您根本不需要编写任何代码。 prepareForSegue方法的目的是传递数据到目标视图控制器、设置委托等。如果您没有数据要传递到第二个视图控制器,或者在该控制器中没有要配置的内容,则不需要实现prepareForSegue。您可以搜索诸如storyboard segue delegate之类的术语,以找到一些教程(例如此链接),描述一些使用prepareForSegue和其他故事板功能来管理视图控制器之间转换的最佳实践。

我尝试了你建议的方法。所以,我创建了一个名为firstViewController的视图控制器。在将新的视图控制器(第二个视图控制器)拖到故事板后,我创建了一个新文件,一个名为secondViewController的Objective-C类,类型为UIViewController。然后,我将此视图控制器的类名称标识为secondViewController。设置完这些视图控制器后,我将一个按钮从firstViewController连接到secondViewController。最后,我单击了firstViewController并嵌入了导航视图控制器。编译器成功运行了。 - Hans
我找到了主文件 main.m 中的以下这一行代码:" return UIApplicationMain(argc, argv, nil, NSStringFromClass([DiscountWalletAppDelegate class])); "该行代码旁边还有一个标记,上面写着:"Thread 1: signal SIGABRT"。请问这是什么意思? - Hans
这是在我模拟器上点击按钮后出现的。 - Hans
嘿!我已经想通了。我已成功完成了Segue。但是我的secondViewController没有显示其内容(标签,文本字段)。基本上,它给我显示了一个黑屏,左上角有一个返回按钮。 - Hans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接