给UIBarButtonItem增加isSelect属性

最近一个需求类似淘宝的购物车编辑按钮,这个按钮在nav上,点击之后文字变为完成,再次点击变回编辑,当然我们使用自定义的button可以搞定,但是如果我们坚持使用系统的UIBarButtonItem呢,我们需要一个Bool属性来标识这个控件是否在选中状态,就是我们使用button那样,当然有很多解决方案,今天我们说一个使用category解决一下

针对UIBarButtonItem新建一个category文件

.h代码

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface UIBarButtonItem (Extension)

/**
 对barbuttonitem增加是否选中属性
 */

@property(nonatomic, assign, getter=isMySelect) BOOL mySelect;

@end

.m代码

#import "UIBarButtonItem+Extension.h"

@implementation UIBarButtonItem (Extension)

-(void)setMySelect:(BOOL)mySelect {
    //因为这里需要一个id类型的value,所以我转成了number类型
    objc_setAssociatedObject(self, @selector(isMySelect), [NSNumber numberWithBool:mySelect], OBJC_ASSOCIATION_COPY_NONATOMIC);
}

-(BOOL)isMySelect {
     //因为在set方法中转成了number类型,所以这里需要转成Bool类型
    return [objc_getAssociatedObject(self, @selector(isMySelect)) boolValue];
}

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,132评论 8 183
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,637评论 25 708
  • 一 “你要是长的好看我说不定就会喜欢你了。” “去你妈的。” 我把手机往边儿上一摔,他妈的。如果不是我的高素质支撑...
    七月冬菇阅读 422评论 1 0
  • 郭老师您好,最近在复习C语言时,自己用选择和冒泡排序写了两个函数,用来给一个结构数组进行排序。操作过程中有一些疑问...
    SailorARK阅读 204评论 0 0