IOS的四种传值方式

编程入门 行业动态 更新时间:2024-10-28 16:26:34

IOS的<a href=https://www.elefans.com/category/jswz/34/1769239.html style=四种传值方式"/>

IOS的四种传值方式

 在IOS界面跳转中,通常需要传值来解决一些实际问题,比如A界面跳转B界面时,需要告诉B界面显示那些内容。B界面做了某些操作之后,A界面需要做一些其他的操作等等。这些操作的数据来往,我们可以看做它在传值,所以传值不是我们一般意义的传一些数值过去,而是一些数据,可以是一些字符串,一个数组,某种状态等等。

    在介绍之前,先奉上自己做的Demo:

    iOS界面间的传值方式大概可以分为以下四种:

        1.正向传值。

        2.反向传值。

        3.通知传值。

        4.单例传值。

    一、正向传值。当A界面向B界面跳转时,A界面将一些数据传给B界面,这就是正向传值。 

 

    SecondViewController *vc = [[UIStoryboard storyboardWithName:@"Main"bundle:nil]           instantiateViewControllerWithIdentifier:@"SecondViewController"];

    vc.value = @"我是正向传值过来的";

    [self.navigationController pushViewController:vc animated:YES];

这就是一个正向传值的简单例子,在初始化完secondViewController之后,给它的一个属性赋值,然后在secondViewController用来显示或者一些其他的操作。由此可以看出正向传值是最简单,最基本的方式。

    二、反向传值。当A界面跳转B界面,B界面将一些数据传递给A界面时,这就是反向传值。

        反向传值相对来说比较复杂,比较常用的有代理和block两种方法,在这里我们只演示代理。

        第一步:为了方便理解,首先我们先在B界面定义一个协议,在协议里面在定义一个方法,方法的具体作用就是传值用的。

        

@protocol ThirdViewControllerDelegate <NSObject>

 

-(void)finishValue:(NSString *)string;

 

@end

        第二步:在B界面声明一个遵守该协议的属性。

        

@property (weak,nonatomic) id<ThirdViewControllerDelegate> delegate;

        第三步:在A界面初始化B界面时,同时给该属性设置代理对象为A界面,也就是self。

 

ThirdViewController *vc = [[UIStoryboard storyboardWithName:@"Main"bundle:nil] instantiateViewControllerWithIdentifier:@"ThirdViewController"];

    vc.delegate = self;

    [self.navigationController pushViewController:vc animated:YES];

        vc.delegate = self。这句话就设置了代理对象。

        第四步:让A界面在遵守该协议。

        

@interface SecondViewController () <ThirdViewControllerDelegate>

        第五步:在A界面实现一些里面的传值方法,并改变一些显示等等。

        

- (void)finishValue:(NSString *)string {

    self.label.text = string;

}

        在这里我只是简单的做了一个显示。

        第六步:在B界面的触发事件里,让delegate属性调用传值方法。

        

[self.delegate finishValue:self.textField.text];

        到这里,我们使用代理的方法实现了反向传值。

    三、通知传值。利用通知中心,向某个已经注册了通知的对象发送数据。在实现方式上和反向传值大同小异。

        通知传值不一定发生在A界面和B界面之间,或许A界面与B界面没有什么关系,它们可能是并行存在的关系,比如tabbarController的每个tabbar上的viewController。

        第一步:在A界面注册是个通知,并实现接收通知的方法。

            

[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(notification:) name:@"notification" object:nil];

        注册一个通知,并且定义一个通知接收的方法,和通知的名称

 

-(void)notification:(NSNotification *)info {

    self.textField.text = info.userInfo[@"value"];

}

        实现接收通知的方法

        第二步:在B界面发送相同名称的通知。

        

[[NSNotificationCenter defaultCenter] postNotificationName:@"notification" object:nil userInfo:@{@"value":@"我是通知传值过来的"}];

        参数userInfo里面要放入需要发送的数据。这样就实现了通知传值。

    四、单例传值。创建一个单例类,定义某些属性用来存储数据,在使用的时候拿出来使用,这就是单例传值。这里就不演示了。

    IOS的四种传值方式到此就介绍完了,希望大家多多支持。

更多推荐

IOS的四种传值方式

本文发布于:2024-02-24 19:34:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1696431.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:四种   方式   IOS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!