• iOS:切换视图时,反向传递数据方法二:代理


    代理:

      1、发送信息的控制器设置一个代理,并自定义一个代理的方法,用来传递数据

      2、接受信息的控制器遵循发送信息的控制器的协议

      3、接受信息的控制器设置发送信息的控制器的代理为自己self

      4、接受信息的控制器实现协议中的方法,即接受数据

      首先将控制器通过modal(push)方式联接,同时设置segue的identifier标识,因为这个identifier是与目的控制器唯一的识别的方式,最后再进行代码操作。

    1、所有文件:

    2、让FirstViewController关联自己的类ViewController(.h/.m)

    3、让SecondViewController关联自己的类SecondViewController(.h/.m)

    4、设置segue的identifier标识

    具体代码如下:

    FirstViewController控制器关联的ViewController类

     1 #import "ViewController.h"
     2 #import "SecondViewController.h"
     3 
     4 @interface ViewController ()<SecondViewControllerDelegate>
     5 @property (weak, nonatomic) IBOutlet UITextField *firstTextField;
     6 
     7 @end
     8 
     9 @implementation ViewController
    10 
    11 - (void)viewDidLoad {
    12     [super viewDidLoad];
    13 }
    14 
    15 //重写该方法,视图切换时,自动调用
    16 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    17 {
    18     if([segue.identifier isEqualToString:@"modal"])
    19     {
    20         //获取目的控制器
    21         SecondViewController *secondVC = segue.destinationViewController;
    22         
    23         //正向传数据
    24         secondVC.information = self.firstTextField.text;
    25         
    26         //设置代理
    27         secondVC.delegate = self;
    28         
    29     }
    30 }
    31 
    32 #pragma mark -<SecondViewControllerDelegate>
    33 //反向接受信息
    34 -(void)FinishedInformation:(SecondViewController *)secondVC andinfo:(NSString *)infos
    35 {
    36     self.firstTextField.text = infos;
    37 }
    38 @end

    SecondViewController控制器关联的SeconViewController类

     1 #import "SecondViewController.h"
     2 
     3 @interface SecondViewController ()
     4 @property (weak, nonatomic) IBOutlet UITextField *secondTextField;
     5 
     6 @end
     7 
     8 @implementation SecondViewController
     9 //返回时的触发事件
    10 - (IBAction)returnClicked:(UIBarButtonItem *)sender
    11 {
    12     //反向传递数据
    13     [self.delegate FinishedInformation:self andinfo:self.secondTextField.text];
    14     
    15     //关闭模态窗口
    16     [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
    17     //[self dismissViewControllerAnimated:YES completion:nil];
    18 }
    19 
    20 - (void)viewDidLoad {
    21     [super viewDidLoad];
    22     
    23     // 显示文本框内容(接受传递过来的数据)
    24     self.secondTextField.text = self.information;
    25 }
    26 
    27 @end
  • 相关阅读:
    .net core 下编码问题
    spring一些简单小注意知识点
    使用ORM插入数据报错 Duplicate entry '0' for key 'PRIMARY'
    python:零散记录
    python:端口扫描邮件推送
    redis:哨兵集群配置
    redis:安装配置主从
    iptables:ipset批量管理ip
    Django:调用css、image、js
    Python:字体颜色
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4808528.html
Copyright © 2020-2023  润新知