IOS UITableView 高仿微信右侧滑动定位内容

2019-07-25  本文已影响0人  暖心幽瞳

前言:最近接了一个新项目、项目中有一个需求就是一个UITableView右侧滑动索引定位TableView分区内容、好了、相信大家对这个功能点都有所了解以及见过、那么做成微信的形式咱们是不是得自定义呀、好了、上代码。

#pragma mark - UITableView Delegate
- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
    static NSString *identfier = @"XCLeagueFilterCell";
    XCLeagueFilterCell *cell = [tableView dequeueReusableCellWithIdentifier:identfier];
    if (cell == nil) {
        cell = [[XCLeagueFilterCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identfier];
    }
    NSString *key = self.groupNameArr[indexPath.section];
    NSArray *valueArr = [self.dataDic objectForKey:key];
    cell.titlelabel.text = [NSString stringWithFormat:@"%@", valueArr[indexPath.row]];
    cell.deatilLabel.text = [NSString stringWithFormat:@"%ld", indexPath.row];
    // 第一行显示
    if (indexPath.row == 0) {
        cell.topLineLabel.hidden = NO;
    } else {
        cell.topLineLabel.hidden = YES;
    }
    [cell.logonIv setImage:XCImage(@"score_icon_liansai")];
    return cell;
}

#pragma mark 索引列点击事件
// 手指滑动及点击字母相应的代理
-(NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{
    //点击索引,列表跳转到对应索引的行
    if ([title isEqualToString:@"热门"]) {
        return self.groupNameArr.count;
    }
    [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:index] atScrollPosition:UITableViewScrollPositionTop animated:YES];
    //[XCProgressHUD showSuccess:title];
    return index;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    return [self.groupNameArr objectAtIndex:section];
}

// 索引标题就是右侧的A-Z 字母
- (nullable NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    NSMutableArray *listTitlesArray = [[NSMutableArray alloc] initWithCapacity:[self.groupNameArr count]];
    for (NSString *item in self.groupNameArr) {
        [listTitlesArray addObject:item];
    }
    return listTitlesArray;
}

- (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSString *key = self.groupNameArr[section];
    NSArray *valueArr = [self.dataDic objectForKey:key];
    return valueArr.count;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return self.groupNameArr.count;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 50;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

图片中已经注释了几个重点的代理方法、如需要其他功能定制则实现系统其他代理方法。下载地址:https://github.com/chenxuhunoc/WeChatDragIndex

上一篇下一篇

猜你喜欢

热点阅读