列表的索引功能SCIndexView及通讯录拼音分组排序BMChineseStringSort

在这里分享两个非常好用的列表的索引功能SCIndexView及通讯录拼音分组排序BMChineseStringSort


image.png

这里简单记录下两个的用法
SCIndexView:
先放上原作者的地址http://www.cocoachina.com/cms/wap.php?action=article&id=21851
用法:在拿到作者封装好的代码后,需导入一个头部文件

#import "UITableView+SCIndexView.h"

再创建tableview,代码如下

self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
    self.tableView.dataSource = self;
    self.tableView.delegate = self;
    self.tableView.showsHorizontalScrollIndicator = NO;
    self.tableView.backgroundColor = VIEW_BG_COLOR;
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    [self.view addSubview:self.tableView];
    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.right.bottom.equalTo(self.view);
        make.top.equalTo(self.barImageView.mas_bottom);
    }];
    
    if (@available(iOS 11.0, *)){
        // 这两个方法必须要,否则代理中设置组头/尾高度无限
        self.tableView.estimatedSectionHeaderHeight = 0;
        self.tableView.estimatedSectionFooterHeight = 0;
    }
    
    [self.view layoutIfNeeded];
    
    SCIndexViewConfiguration *configuration = [SCIndexViewConfiguration configurationWithIndexViewStyle:SCIndexViewStyleDefault];
    _tableView.sc_indexViewConfiguration = configuration;
    _tableView.sc_translucentForTableViewInNavigationBar = NO;

self.tableView.sc_indexViewDataSource = self.indexArray;

self.indexArray为tableview右边索引数据数组
self.indexArray数据是在BMChineseStringSort对数据进行处理后得到的,在下面有讲到

BMChineseStringSort
原作者的地址https://www.jianshu.com/p/b8de95b3175e
具体介绍请看原作者
用法:在拿到作者封装好的代码后,导入头文件

#import "BMChineseSort.h"

对自定义对象数组排序需要只需要使用两类个方法:

+(NSMutableArray*)IndexWithArray:(NSArray*)objectArray Key:(NSString *)key;
+(NSMutableArray*)sortObjectArray:(NSArray*)objectArray Key:(NSString *)key;

第一个方法:一个参数objectArray是自定义对象数组,另一个参数key是数组里需要排序的字段名字。方法返回所有出现过的首字母,用于显示在tableview的head以及右侧索引缩写。
第二个方法:,是根据对象的某个字段值对整个数组进行排序,首先,先将字段首字母拼音相同的对象存到同一个数组里,然后把所有的数组再放到结果数组里

实际应用:

//根据Person对象的 name 属性 按中文 对 Person数组 排序
                self.indexArray = [BMChineseSort IndexWithArray:resultArr Key:@"name"];
                self.tableArr = [BMChineseSort sortObjectArray:resultArr Key:@"name"];

self.indexArray为自定义接收数组

NOTE:最近作者有更新整体速度提升了一倍,有兴趣的同学可以直接传送到原作者

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

推荐阅读更多精彩内容

  • 因为之前开发时都是在xib文件中添加约束,或者代码中计算frame并没有接触过Masonry,现在写篇博客来归纳总...
    口子窖阅读 6,544评论 1 4
  • (一)Masonry介绍 Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布...
    木易林1阅读 2,397评论 0 3
  • Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了并具有高可读性...
    3dcc6cf93bb5阅读 1,834评论 0 1
  • Masonry是一个轻量级的布局框架,它拥有自己的描述语法(采用更优雅的链式语法封装)来自动布局,具有很好可读性且...
    AngeloD阅读 3,378评论 0 9
  • 《大话西游》的结尾有句话,“你看那个人,好奇怪呦,像一条狗。”像条狗的人,是放弃了人间的男女情欢,无欲无念兢兢业业...
    梦槑阅读 7,474评论 1 7