iOS开发-使用Storyboard进行界面跳转及传值

IOS 页面跳转方法(采用Storyboard或者纯代码) IOS页面跳转主要分为两种方式:  1,采用XCode最新的storyboard模板,通过segue 的方式,基本不用写代码,非常的方便,适合个人开发者,做项目不大的开发简直是利器。但是由于storyboard不便于团队开发,对版本管理会造成很大的困扰,所以我在的团队貌似还是全部手动写代码。    2, 手动代码跳转。 Storyboard: segue的应用也分为两种,segue 阅读详情

前言:苹果官方是推荐我们将所有的UI都使用Storyboard去搭建,Storyboard也是一个很成熟的工具了。使用Storyboard去搭建所有界面,我们可以很迅捷地搭建出复杂的界面,也就是说能为我们节省大量的时间。我们还可以很直观地看出各个界面之间的关系,修改起来也很方便。将来如果遇到需要作修改的地方,我们只需要找到相对应的Storyboard就可以了,比起以前来说,快捷了不少。

 

我会在本文的最后附上Demo,可以帮助你们有更直观的理解,有需要的人可以去下载运行一下。

 

另外,建议大家实验每一种方法时,先清空界面上的内容,以避免出现错误。因为初学者很容易使得界面上有残留,具体的这里就不说明了。接下来,让开始我们的Storyboard之旅吧!

 

目录:

一、使用Storyboard进行跳转

1)纯Storybard界面操作

2)使用代码进行跳转

二、Storyboard界面传值

1)使用prepareForSegue方法进行跳转:

2)Storyboard Id跳转

 

一、使用Storyboard进行跳转

1)纯Storyboard界面操作

我们在Storyboard上放置一个按扭,在按扭上方点击并按住“右键”不放,拖动到跳转的下一个界面上。

 

松开右键后,会有一个黑色透明的弹出框,选择跳转的方式:

 

从这里可以看到,界面和界面之间多了一条线连接,如下图:

我们可以在Xcode右边的工具栏看到,我们刚刚的连线操作(现在可以运行项目了):

2)使用代码进行跳转

我们把刚刚的连线删除掉,如下图所示:

新建一个继承于UIViewController的类CodeViewController:

选中按扭所在的界面,设置它的类文件,默认都是继承于UIViewController,如下图所示:

我们把它改成刚刚新建的类“CodeViewController”,如下图所示:

把界面缩小(你可以在空白的地方双击一下,或者右键选择缩放比例),这次我们不是直接使用“按扭”连接界面,而是进行界面和界面之间的连线,如下图所示:

注意:100%的缩放是不能进行界面和界面之间的连线!

之后的操作和前面的一致,为了容易理解,我还是贴一下图:

选中“这条线”,在Storyboard Segue的Identifier指定一个标识符,后面我们会用到: 

这时我们需要为按扭添加一个事件,为此需要同时显示Storyboard和.m文件,操作如下:

创建事件的操作和之前连线的操作一样:

为这个事件创建一个名字,然后点击Connect:

在事件里添加如下代码,把刚连线的Identifier传进去,sender一般为"self":

[self performSegueWithIdentifier:@"EasyCode" sender:self];

这样,就可以成功跳转了。

 

二、Storyboard界面传值

1)使用prepareForSegue方法进行跳转:

我们创建两个类,PrepareViewController和ReceiveViewController

然后在Storyboard上新建两个ViewController,把两个界面连接起来。操作步骤和上方(代码跳转)的相同,这次我们把连线的Identifier定义为“SendValue”:

 有按扭的界面的类设置为PrepareViewController,如下图所示:

 

选择第二个界面,设置继承的类为ReceiveViewController:

ReceiveViewController.h:

复制代码
#import <UIKit/UIKit.h>

@interface ReceiveViewController : UIViewController

@property (strong, nonatomic) NSString *name;
@property (assign, nonatomic) int age;

@end
复制代码

ReceiveViewController.m,当然是要输出一下啦,不然怎么知道传值有没有成功:

复制代码
#import "ReceiveViewController.h"

@interface ReceiveViewController ()

@end

@implementation ReceiveViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSLog(@"name is %@, age is %d", _name, _age);
}

@end
复制代码

 

PrepareViewController.m文件:

复制代码
#import "PrepareViewController.h"
#import "ReceiveViewController.h"

@interface PrepareViewController ()

@end

@implementation PrepareViewController

- (IBAction)goAction:(id)sender
{
    // 根据指定线的ID跳转到目标Vc
    [self performSegueWithIdentifier:@"SendValue" sender:self];
}


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // segue.identifier:获取连线的ID
    if ([segue.identifier isEqualToString:@"SendValue"]) {
        // segue.destinationViewController:获取连线时所指的界面(VC)
        ReceiveViewController *receive = segue.destinationViewController;
        receive.name = @"Garvey";
        receive.age = 110;
        // 这里不需要指定跳转了,因为在按扭的事件里已经有跳转的代码
//        [self.navigationController pushViewController:receive animated:YES];
    }
}

@end
复制代码

可以成功接收到值啦(大功告成):

2)Storyboard Id跳转

继续拖两个纯净的界面(VC)到Storyboard上,第一个界面也是放上一个UIButton:

IdViewController是我刚新建出来的类,接收值的界面用回ReceiveViewController类,指定界面继承的类为(IdViewController、ReceiveViewController)

 

第二个界面设置Storyboard id为“IdReceive”,后面跳转会用到:

IdViewController.m

复制代码
- (IBAction)action:(id)sender
{
    // 获取指定的Storyboard,name填写Storyboard的文件名
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    // 从Storyboard上按照identifier获取指定的界面(VC),identifier必须是唯一的
    ReceiveViewController *receive = [storyboard instantiateViewControllerWithIdentifier:@"IdReceive"];
    receive.name = @"GC";
    receive.age = 10;
    [self.navigationController pushViewController:receive animated:YES];
}
复制代码

可以运行程序了,能够成功接收到值,成功!

 

小结:你们能否看出各个方法的优点和缺点?现在没发现不要紧,当你们以后遇上真正需要的时候,优缺点就很容易知道了,这也算是留给你们思考的一件事情吧。

 

题外话:

有部分人是不同意使用Storyboard的,他们的的观点如下:

1)Storyboard出现的错误不能调试,往往使得他们开发缓慢

2)对于多人开发,版本管理会比较复杂

3)Storyboard经常无缘无故出现问题!使得他们很头痛!

首先,对于第1点和第3点的回答:Storyboard出现的错误往往是可以避免的。其次,Storyboard不会无缘无故出现问题,如果真的出现问题了,往往是开发者的操作不当成造成的。我为什么这样说?

因为我以前也遇到很多因Storyboard引起的错误,那时候的我也经常怨Storyboard。但随着对Storyboard越来越熟悉后,我才发现,以前全都是因为自己操作不当,而造成程序的崩溃。

第2点:多人开发,可以区分模块开发,每个人负责的模块都不相同,不一定要所有人的都开发同一个模块。当然,有特殊情况的我也不知道,所以说这个需要根据项目的大小和复杂度去判定的。

IOS开发-使用Storyboard进行界面跳转及传值 一、使用Storyboard进行跳转 1)纯Storybard界面操作 2)使用代码进行跳转 二、Storyboard界面传值 1)使用prepareForSegue方法进行跳转: 2)Storyboard Id跳转 立即下载

相关推荐

保姆级教程:在Ubuntu 21.04上搞定USRP X410的UHD 4.1驱动与Gnuradio 3.9安装(含虚拟机网络避坑指南)

本文提供在Ubuntu 21.04上配置USRP X410的UHD 4.1驱动与Gnuradio 3.9的详细教程,涵盖虚拟机网络设置、依赖安装、源码编译及常见问题解决方案,帮助开发者高效搭建SDR开发环境。

weixin_27869497的博客 272

iOS storyBoard 页面间跳转的三种形式

iOS storyBoard 页面间跳转的三种形式 第一种:在  A 界面,创建一个按钮,直接拖跟线到 B 界面,选择跳转方式,model 或者 push ;如图:右键选中按钮,直接拖拽一条线到OneViewController ,选择跳转模式为model ,然后选择segue 线条,给线条设置一个标识。(用于页面跳转传值用),此方式,按钮无需创建输出口方法,可直接点击跳转 在

万里初心 3679

量化实战:用三种波动率模型给你的期货策略做个“体检”(附Python代码与螺纹钢案例)

本文深入探讨了三种专业波动率模型(Parkinson、Garman-Klass和Rogers-Satchell)在期货量化策略中的应用,并以螺纹钢期货为例,展示了如何通过Python实现这些模型进行多维度波动率分析。文章详细比较了不同模型的特点和适用场景,提供了动态仓位管理、止损策略优化等实战应用方案,帮助交易者更精准地评估市场风险,优化策略表现。

weixin_26824299的博客 460

iOS中storyboard故事板使用Segue跳转界面、传值

在iOS的开发过程中,不可避免的要设计界面,在android中有xml设置界面和直接使用java代码设置界面控件两种方式,在之前的ios开发中也是类似的有xib文件设置界面及用代码直接设置控件两种方法,但后来又出了一种方式,就是storyboard故事板,其实storyboard和xib文件很像,最大的不同之处在于一个xib文件对应一个ViewController视图控制器,而storyboard对应多个,基本一个应用只需要一个storyboard就可以了,不再需要为每个控制器创建一个xib文件,从这点上来

Minecraft 9994

[明道云] -基础教学5- 明道云 40 种控件详解与场景解析

明道云工作表提供40种业务控件,涵盖文本、数值、关联、公式等类型,支持各类业务场景。文本类支持多行输入、正则校验;数值/金额类提供进度条、百分比显示等功能;关联类实现多表数据引用;公式/函数类支持复杂逻辑运算;自动化类包括打印模板、API调用等控件。合理使用这些控件可提升数据收集质量和自动化效率,同时需注意控件联动的性能影响和权限配置。关键控件包括关联记录、级联选择、公式计算等,适用于订单管理、客户信息关联等业务场景。

每日出拳老爷子的博客 8541

【乐企文件生成工程】乐企文件生成支持所有特定要素类型发票

【代码】【乐企文件】乐企文件生成最新更新!!!

九七的博客 850

如何在xcode中使用storyboard

StoryBoard是iOS 5的新特征,目的是代替历史悠久的NIB/XIB,对于已经习惯了xib文件的孩子们来说,StoryBoard还不是那么熟悉。经过两天的研究,有了一些心得,在此分享。 一、如何使用storyboard简单实现Push页面,步骤如下: 1、创建一个带有storyboard的singleview application应用程序如图。 创建好的应用

For Marie Curie 7万+

华为OD机试真题 新系统 2026-04-22 C++ 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 167
下一篇: iOS开发--UItableView类属性
hireny
博客等级 码龄12年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值