iOS -- 通过runtime向Button的点击方法里传递参数实现单选效果

效果:

有三个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代码块通过控制器传递过来的参数做出相应的处理。

SelectButton.h文件
SelectButton.m文件


关联两个button是这样,依次类推可以关联多个对象,以实现单选效果。

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

相关阅读更多精彩内容

  • 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的...
    西木阅读 30,798评论 33 466
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,711评论 25 709
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,894评论 0 9
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,922评论 0 17
  • 1、感赏老公理解我的病痛,承担家务,他是一个不善表达的人,但是能感受到他的贴心,心情舒畅。 2、感赏畅儿吸取上周做...
    后来来了阅读 1,418评论 1 2

友情链接更多精彩内容