效果:
有三个button点击其中一个将其他两个的选中状态取消,相当于单选的效果:
由于三个不同是同一类型的按钮,如果点击三个按钮都调用一个方法将会避免我们的代码重复,提高工作效率。那么要实现这样的代码效果我们就必须在点击方法里边将另外两个button的状态改变,并且点击的button不确定,其他的button也是不能确定的,这就需要我们在点击button调用点击方法的时候将另外两个button作为参数传到点击方法中去,
实现方法:
现在来分享一种传递的方法:
首先引入头文件#import<objc/runtime.h> 运用以下两个方法存取对象
1、设置关联对象:此方法第一个参数是指定的对象,第二个参数是关联的标识,第三个参数是要和指定对象关联的对象,第四个参数是关联方式(枚举值);
objc_setAssociatedObject(<#id object#>, <#const void*key#>, <#id value#>, <#objc_AssociationPolicy
policy#>)
2、取出关联对象:返回关联的对象,第一个参数是指定对象,第二个参数是关联标识。
objc_getAssociatedObject(<#id object#>, <#const void *key#>)
代码示例:初始化三个button并且关联其他两个button
实现点击方法:点击button将点击按钮之后应该有的状态通过block传递到自定义的button的初始化方法包含的代码块中对按钮做出相应操作。
自定义的button代码:在init方法里实现block代码块通过控制器传递过来的参数做出相应的处理。
关联两个button是这样,依次类推可以关联多个对象,以实现单选效果。