Skip to content

服务器托管,北京服务器托管,服务器租用-价格及机房咨询

Menu
  • 首页
  • 关于我们
  • 新闻资讯
  • 数据中心
  • 服务器托管
  • 服务器租用
  • 机房租用
  • 支持中心
  • 解决方案
  • 联系我们
Menu

StoryBoard学习(5):使用segue页面间传递数据

Posted on 2023年9月18日2023年9月18日 by hackdl

StoryBoard学习(5):使用segue页面间传递数据

 

 

函数:

 

– (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

 

具体例子:

 

1.首先创建1个Single View模版项目,然后在MainStoryboard中添加1个新的ViewContronller。并在2个View Controller中添加标签、按钮、编辑输入框。

2. 将第1页和第2页建立segue。

选中第1页中的按钮[跳到第2页],鼠标右键(或按住Controll键,鼠标左键)拖拽到第2页后,放手,在弹出菜单上选择[modal]

 

3. 将第1页中的编辑输入框组件与class文件挂钩。

单独窗口打开MainStoryboard和ViewController.h文件,然后鼠标右键拖拽编辑输入框到.h文件中的@interface的下一行。

注意,编辑输入框组件的name属性这里设置为 page1Data

 

4.在ViewController.m中添加如下代码。

 

在@implementation之后添加:

 

 

@synthesize page1Data;

 

重载prepareForSegue方法:

 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSString* data = page1Data.text;
    UIViewController* view = segue.destinationViewController;
    if ([view respondsToSelector:@selector(setParam:)]) {
        [view setValue:data forKey:@"param"];
    }
}

 

注意:其中的setParam和param会和下面的代码进行关联!!

 

 

5.添加新类文件并绑定给第2页。

注意:Class名为 SecondViewController

将类SecondViewController绑定到第2页.

 

6.将第2页中的编辑输入框组件绑定到类SecondViewController中。

单独窗口打开SecondViewController.h和MainStoryboard,然后选中第2页中的编辑输入框,然后鼠标右键拖拽编辑输入框到SecondViewController.h文件中的@interface的下一行。

 

注意:绑定时编辑输入框组件的name属性设置为 page2Data。

 

 

7.修改SecondViewController的.h和.m文件。

7.1 修改SecondViewController.h

@interface SecondViewController : UIViewController之后添加:

 

@property (strong, nonatomic) NSString *param;

注意:这里定义的参数 param 必须和前面ViewController.m中的prepareForSegue方法中的param相同!!!

 

 

7.2 修改SecondViewController.m

在@implementation SecondViewController之后添加:

 

@synthesize param;
@synthesize page2Data;

viewDidLoad:

 

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view.
    page2Data.text=param;
}

 

编译运行,当在第1页中输入参数,跳到第2页后可以显示第1页中输入的参数。

 

 

 

8. 给第2页中的按钮[关闭窗口]添加事件。

单独窗口打开SecondViewController.h和MainStoryboard,然后选中第2页中的按钮[关闭窗口],右键拖拽到SecondViewController.h中@interface SecondViewController : UIViewController之后;

 

在弹出窗口的Connection属性选择Action,Name属性设置为closeWin。然后点按钮[Connect]。

 

 

可以看到,在SecondViewController.h中增加了如下代码:

 

C代码  

1. - (IBAction)closeWin:(id)sender;

 

在SecondViewController.m中增加了如下代码:

 

C代码  

1. - (IBAction)closeWin:(id)sender {  
2. }

 

修改 SecondViewController.m中的closeWin方法,具体代码如下:

 

 

- (IBAction)closeWin:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}

 

 

编译运行,当显示第2页后,点击[关闭窗口]按钮,即可关闭第2页,重新显示第1页。

 

接下来,要实现在第2页修改接收到的参数,然后将修改后的参数返回给第1页。

 

 

9. 修改 ViewController.h和.m文件内容。

 

 9.1 ViewController.h

在 @interface ViewController : UIViewController

 

@property (strong,nonatomic) NSString* editData;

 

注意:定义的变量 editData 是用来接收 第2页编辑输入框的内容,在 SecondViewController.m会用到!!!

 

 

9.2 ViewController.m

在 @implementation ViewController

 

@synthesize editData;

 

修改方法 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSString* data = page1Data.text;
    UIViewController* view = segue.destinationViewController;
    if ([view respondsToSelector:@selector(setParam:)]) {
        [view setValue:data forKey:@"param"];
    }
    
    if ([view respondsToSelector:@selector(setFirstViewController:)]) {
        [view setValue:self forKey:@"firstViewController"];
    }
}

 

注意:其中的 setFirstViewController 和 firstViewController 在下面的 SecondViewController.h和.m中会定义!!!

 

 

 

重载方法 -(void)viewWillAppear:(BOOL)animated :

 

-(void)viewWillAppear:(BOOL)animated{
    NSLog(@"viewWillAppear");
    [super viewWillAppear:animated];
    page1Data.text=editData;
}

 

10. 修改 SecondViewController.h和.m文件内容。

 

10.1 SecondViewController.h

在 @interface SecondViewController : UIViewController

 

@property (strong,nonatomic) id firstViewController;

 

注意:变量名称 firstViewController必须和上面ViewController.m中相同!!!

 

10.2 SecondViewController.m

在  @implementation SecondViewController

 

@synthesize firstViewController;

 

重载方法 -(void)viewWillDisappear:(BOOL)animated

 

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    
    if ([firstViewController respondsToSelector:@selector(setEditData:)]) {
        [page2Data endEditing:YES];
        [firstViewController setValue:page2Data.text forKey:@"editData"];
    }
}

注意:其中的  setEditData 和  editData 必须和上面 ViewController.h和.m中定义的相同!!!

 

 

 

OK,编译运行。第1页的输入文字会传递到第2页的输入框中,第2页的输入框文字在关闭窗口后同样会传递给第1页的输入框中。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net

相关推荐: Kubernetes v1.27 新特性一览

大家好,我是张晋涛。 Kubernetes v1.27 是 2023 年的第一个大版本更新,包含了近 60 项主要的更新。 而 1.26 只有 37 项,所以这个版本可以说是一个变化非常显著的版本了。 其中 18 个增强功能正在进入 Alpha 阶段,29 个…

Related posts:

  1. 精通服务器托管的三大技巧
  2. 全球服务器托管数据中心排名榜单
  3. 三天吃透计算机网络面试八股文
  4. 探究VPS价格高于托管服务器的原因
  5. 广州服务器租用服务全面覆盖

服务器托管,北京服务器托管,服务器租用,机房机柜带宽租用

服务器托管

咨询:董先生

电话13051898268 QQ/微信93663045!

上一篇: IP地址行业应用
下一篇: [ARM 汇编]进阶篇—存储访问指令—2.3.3 栈操作指令

最新更新

  • 腾讯的认证到底有没有用?怎么样可以通过考试?
  • IP路由选择过程1.1路由选择基础1.2 IP路由选择过程
  • 慢SQL治理实践及落地成果分享
  • 组态编辑器旋转动画
  • 深度学习进阶篇-国内预训练模型[5]:ERINE、ERNIE 3.0、ERNIE-的设计思路、模型结构、应用场景等详解

随机推荐

  • 深入了解服务器租用购买与使用方法
  • 江苏电信托管服务器:保障网络安全的重要选择
  • 使用大带宽的服务器有哪些好处呢
  • day11-SpringBoot中注入Servle
  • 兴和服务器托管:为企业提供安全可靠的云计算服务

客服咨询

  • 董先生
  • 微信/QQ:93663045
  • 电话:13051898268
  • 邮箱:dongli@hhisp.com
  • 地址:北京市石景山区重聚园甲18号2层

友情链接

  • 服务器托管
  • 机房租用托管
  • 服务器租用托管
©2023 服务器托管,北京服务器托管,服务器租用-价格及机房咨询 京ICP备13047091号-8