亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS傳值之代理傳值

2019-11-14 18:38:12
字體:
來源:轉載
供稿:網友

iOS中傳值方式有好幾種,分別是:代理傳值,block傳值,屬性傳值,通知傳值,單例傳值,利用userdefault或者文件方式傳值,通常代理傳值和block傳值使用最普遍,本文介紹代理傳值的方式,后續博客會一次寫上其他傳值方式。

一 什么是委托代理?

1、協議(PRotocol),就是使用了這個協議后,必須按照協議規定的內容來處理事情,協議中要求的方法必須實現(@optional的方法除外)。

protocol是一種語法,它提供了一個很方便的、實現delegate模式的機會。

定義protocol如下:

  1. @protocol ClassBDelegate<NSObject> 
  2. - (void)methodOne; 
  3. @optional 
  4. - (void)methodTwo:(NSString *)value; 
  5. @end

定義了一個ClassB的協議,這個協議中包含兩個方法,其中methodTwo為可選的。

在ClassA的頭文件(ClassA.h)中實現這個協議,如下代碼:

  1. @interface ClassA<ClassBDelegate> 
  2. @end

在ClassA的實現文件(ClassA.m)中實現ClassBDelegate的兩個方法,其中methodTwo可以不實現,如下:

  1. - (void)methodOne{ 
  2.     // 具體實現內容 
  3.  
  4. - (void)methodTwo:(NSString *)value{  
  5.     // 具體實現內容   
  6. }

2、代理(delegate),顧名思義就是委托別人辦事,當一件事情發生后,自己不處理,讓別人來處理。

delegate和protocol沒有關系。delegate本身是一種設計模式。是把一個類自己需要做的一部分事情,讓另一個類(也可以就是自己本身)來完成。

在ClassB的頭文件(ClassB.h)中定義一個代理如下:

  1. @interface ClassB 
  2. @property (nonatomic, unsafe_unretained) id<ClassBDelegate> delegate; 
  3. @end

這樣,當我們在ClassB的實現文件(ClassB.m)中遇到想讓別的類(如 ClassA)處理的問題時,就可以這樣

  1. [self.delegate methodOne]; 
  2. [self.delegate methodTwo:@"需要傳遞的值"];

二  具體實例

   實現的功能是:在viewcontroller中創建一個UIButton按鈕用于push到下一個頁面,和一個UILable用于顯示從第二個頁面傳回的文字,在secondviewcontroller中創建一個UITextfield用于輸入文字。在輸入完成按下back返回第一個頁面后,在lable上顯示輸入的文字。

1 工程截圖

 

   2  ViewController.h文件

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

  3  ViewController.m文件

#import "ViewController.h"

#import "SecondViewController.h"

 

@interface ViewController ()<getTextFromDelegate>

{

    UIButton *_button;

    UILabel *_lable;

}

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    [self initLayout];

}

- (void)initLayout{

    _button = [UIButton buttonWithType:UIButtonTypeSystem];

    _button.frame = CGRectMake(0, 0, 100, 50);

    _button.center = self.view.center;

    _button.backgroundColor = [UIColor redColor];

    [_button addTarget:self action:@selector(pushToNextViewController:) forControlEvents:UIControlEventTouchUpInside];

    [_button setTitle:@"下一頁" forState:UIControlStateNormal];

    [self.view addSubview:_button];

    

    _lable = [[UILabel alloc]initWithFrame:CGRectMake(10, 64, 355, 200)];

    _lable.backgroundColor = [UIColor orangeColor];

    [self.view addSubview:_lable];

}

- (void)pushToNextViewController:(UIButton *)sender{

    SecondViewController *secondVC = [SecondViewController new];

    //代理就是本身

    secondVC.delegate = self;

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

}

#pragma mark 實現代理方法

- (void)getText:(NSString *)text{

    _lable.text = text;

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 @end

4  SecondViewController.h文件

#import <UIKit/UIKit.h>

@protocol getTextFromDelegate <NSObject>

//聲明協議方法

- (void)getText:(NSString *)text;

@end

 @interface SecondViewController : UIViewController

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

@end

4  SecondViewController.m文件

#import "SecondViewController.h"

@interface SecondViewController ()<getTextFromDelegate>

{

    UITextField *_textField;

}

@end

@implementation SecondViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    _textField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 50)];

    _textField.backgroundColor = [UIColor redColor];

    _textField.center = self.view.center;

    [self.view addSubview:_textField];

}

#pragma mark 在頁面將要消失時

- (void)viewWillDisappear:(BOOL)animated{

    //將本頁面獲取的值傳遞給上一個頁面去實現

    [self.delegate getText:_textField.text];

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

@end

三  模擬器運行結果截圖

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂一区二区三区| 91免费综合在线| 国产精品香蕉在线观看| 久久亚洲一区二区三区四区五区高| 亚洲欧美成人一区二区在线电影| 亚洲国产精品久久久| 国产在线999| 97碰碰碰免费色视频| 国产欧美精品va在线观看| 欧美在线视频观看| 精品国产自在精品国产浪潮| 中文字幕久久久av一区| 中文字幕亚洲专区| 亚洲欧美日韩一区二区在线| 亚洲国产日韩欧美在线99| 日韩av电影在线免费播放| 国产在线观看精品一区二区三区| 亚洲欧洲在线免费| 久久视频在线直播| 精品性高朝久久久久久久| 久久久成人的性感天堂| 日本在线精品视频| 色综合色综合久久综合频道88| 亚洲国产三级网| 在线精品高清中文字幕| 国产精品久久久久久久久久ktv| 日韩欧美亚洲范冰冰与中字| 国产一区红桃视频| 97免费在线视频| 日韩av免费在线观看| 欧美电影第一页| 午夜美女久久久久爽久久| 欧美亚洲一区在线| 成人伊人精品色xxxx视频| 国产精品天天狠天天看| 久久久久久久国产精品| 裸体女人亚洲精品一区| 国产999视频| 亚洲毛茸茸少妇高潮呻吟| 色综合久久久久久中文网| 欧美成人黄色小视频| 国内偷自视频区视频综合| 国产999在线| 成人性生交xxxxx网站| 国产成人高清激情视频在线观看| 神马国产精品影院av| 欧美高清视频在线观看| 欧美重口另类videos人妖| 丝袜亚洲欧美日韩综合| 亚洲电影在线观看| 亚洲电影中文字幕| 久久免费视频在线| 精品国产自在精品国产浪潮| 国产成人久久久| 欧洲s码亚洲m码精品一区| 日韩一区av在线| 波霸ol色综合久久| 欧美黄色免费网站| 国产精品爽爽爽| 伊人亚洲福利一区二区三区| 亚洲色图狂野欧美| 国产精品成人在线| 性色av一区二区三区| 91久久精品国产91久久| 日韩的一区二区| 欧美一区二区三区图| 日韩专区在线播放| 国产一区二区三区视频免费| 中文字幕成人精品久久不卡| 国产精品美女www爽爽爽视频| 亚洲视屏在线播放| 91精品视频在线播放| 国产手机视频精品| 久久久爽爽爽美女图片| 91性高湖久久久久久久久_久久99| 另类少妇人与禽zozz0性伦| 国产一区二区三区四区福利| 91久久精品视频| 亚洲欧美中文日韩在线v日本| 亚洲欧美中文日韩v在线观看| 日韩女优人人人人射在线视频| 亚洲第一av网| 久久视频免费观看| 久久久久久91| 精品亚洲一区二区三区在线播放| 欧美超级免费视 在线| 日本精品中文字幕| 国产精品视频99| 亚洲人成网7777777国产| 91免费国产视频| 亚洲欧美国产精品久久久久久久| 欧美日韩精品在线| 国产成人免费91av在线| 狠狠躁夜夜躁人人爽天天天天97| 国产精品网址在线| 亚洲japanese制服美女| 欧美亚洲国产成人精品| 亚洲无限乱码一二三四麻| 亚洲性猛交xxxxwww| 亚洲成人av片在线观看| 亚洲福利小视频| www高清在线视频日韩欧美| 欧美激情精品久久久久久| 国产精品极品美女粉嫩高清在线| 久久精品国产成人| 97色在线观看免费视频| 国产91热爆ts人妖在线| 日韩在线中文字| 性色av一区二区三区免费| 亚洲国产精品福利| 亚洲欧美www| 精品调教chinesegay| 一区二区三区无码高清视频| 国产日韩欧美电影在线观看| 97香蕉久久超级碰碰高清版| 麻豆成人在线看| 7m第一福利500精品视频| 亚洲成av人影院在线观看| 亚洲视屏在线播放| 日韩极品精品视频免费观看| 日本欧美爱爱爱| 神马久久桃色视频| 日本乱人伦a精品| 国产69精品久久久| 一本色道久久综合狠狠躁篇怎么玩| 国产亚洲一区精品| 亚洲视频国产视频| 精品色蜜蜜精品视频在线观看| 亚洲在线视频观看| 日韩免费观看网站| 热草久综合在线| 中文字幕不卡在线视频极品| 欧美精品中文字幕一区| 日韩黄色在线免费观看| 久久亚洲私人国产精品va| 国产网站欧美日韩免费精品在线观看| 成人乱人伦精品视频在线观看| 538国产精品一区二区免费视频| 亚洲人午夜精品免费| 欧美区在线播放| 亚洲一品av免费观看| 久久久久久成人精品| 久久九九亚洲综合| 国产亚洲精品久久久久久| 亚洲综合中文字幕在线| 欧美极品在线视频| 一区二区三区久久精品| 亚洲天堂av在线免费| 欧美有码在线视频| 91精品国产高清自在线看超| 欧美高清激情视频| 欧美性生活大片免费观看网址| 欲色天天网综合久久| 麻豆国产va免费精品高清在线| 亚洲天堂网站在线观看视频| 中文字幕亚洲欧美一区二区三区| 欧美电影在线观看网站| 亚洲图中文字幕| 日韩女优人人人人射在线视频| 久久久在线免费观看| 久久久久久久久久久91| 欧美大尺度电影在线观看| 精品久久久久国产| 最新91在线视频|