IOS 协议代理

代理的步骤:

1.定义协议方法

@protocol SecondViewControllerDelegate

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

@end

2.把代理设置成secondViewController的一个属性。

@property(nonatomic,assign)id delegate;

3.

[self.delegate changeFirstViewControllerLabel:tf.text];

4.遵从协议

#import"SecondViewController.h"

@interfaceFirstViewController :UIViewController

svc.delegate=self;

5.调用协议方法-(void)changeFirstViewControllerLabel:(NSString*)string

{

label.text= string;

}

//代理本质是实现了对象的相互调用

//导航控制器中上级界面向下级界面传值,可以叫做正向传值

//最常用的策略,下级界面定义相应的属性来接收上级界面传递过来的值

//iOS7 之前(传值操作写在push 之后,是无法实现传值的)

//传值

//第一次调用视图控制器的view属性会触发loadView和viewDidLoad

//声明一个协议 (协议本质上是多个类共享的方法列表,只有方法的声明没有实现)

@protocol SendValue

//@required(必须实现的方法)

- (void)sendTitle:(NSString *)title;

//@optional 可选实现的方法

@end

//判断_delegate中是否支持sendTitle:方法

if ([_delegate respondsToSelector:@selector(sendTitle:)]) {

//为了增强代码的安全性(健壮性)

[_delegate sendTitle:btn.currentTitle];

}

想要检查某个类是否实现了某个协议或者某个类是否实现了某个协议的方法,可以通过以下方式来进行测试

//获取某个对象

MyClassView *myClassView = xxxxxxx;

//判断该对象是否实现了MyChooseDayViewDelegate协议

if([myClassView conformToProtocol:@protocol (MyChooseDayViewDelegate)]){

//TODO: balabalabala...

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,388评论 30 472
  • 需要了解ios协议, 首先看一个代码示例: 流氓协议(YHBadManDelegate.h) 君子协议(Gentl...
    DeanYan阅读 13,776评论 11 22
  • 上次写了窗口的相关内容,突然觉得很low。low到我自己看到就起鸡皮疙瘩,我想对于但凡对于编程有些了解的人都...
    磊CC阅读 4,392评论 1 2
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,191评论 2 7
  • 第一页面//NextViewController是push进入的第二个页面//NextViewController...
    Roger_单阅读 4,520评论 0 0