IOS代理模式

  代理困扰了很久,一直看概念,看网上的博客发现不是自己要的!我想要的是一个代理流程。

  第一个界面的名字,姑且我们叫apple吧!第二个界面的名字叫banana;在banana中的值想传给apple,这时候就要用到代理了,可以用其他的传值吗?可以,不过我们先研究代理传值。

  banana传值,banana就要找个代理。

  一.banana

  第一步:

      在banana.h中定义代理

  @protocol BananaDelegate <NSObject>

  // 声明一个代理方法:默认是@require,必须实现代理方法;@optional,非必须实现。

  - (void)bananaDelegate:(BananaViewController *)controller bananaModel:(BananaModel *)model;

  @end

  @interface BananaViewController : UIViewController

  @property (nonatomic, strong) id<BananaDelegate> delegate;

  @end

  第二步:

  在banana.m中返回apple中需要的代码  

  - (IBAction)BackButtonClicked:(id)sender

  {

      BananaModel *m = [[BananaModel alloc] init];

      // 给m赋值吧!假如:

    m.name = @"张三";

    // 判断是apple中否实现代理方法 

      if([self.delegate respondsToSelector:@selector(bananaDelegate:bananaModel:)])

      {

          [self.delegate bananaDelegate:self bananaModel:m];

      }

      [self.navigationController popViewControllerAnimated:YES];

  }

  二.apple 

  第一步:

  @interface AppleViewController ()<BananaDelegate>

  @end

  第二步:

  设置代理

  controller.delegate = self;

  第三步:

  实现代理方法

  - (void)bananaDelegate:(BananaViewController *)controller bananaModel:(BananaModel *)model

  {

    //  这是得到传来的值,你完成你想要的任务吧!
  }

  只是看没有啥用,多写几遍直至熟练!然后,就能领会到了!

posted @ 2015-04-07 17:34  解忧杂货店  阅读(299)  评论(0编辑  收藏  举报