微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何使用UITableViewCellAccessoryCheckmark在uitableview中检查多行

如何解决我如何使用UITableViewCellAccessoryCheckmark在uitableview中检查多行

|| 大家好,我知道这是一个常见的问题,但请帮助我。我有一个表格视图,其中显示了来自NSArray的数据。我想用UITableViewCellAccessorycheckmark选择多行。但是,当我滚动检查标记消失。每个人都在谈论可重复使用的单元格。我理解这个概念,但是无法解决我的问题。因此,请有人可以给我实现cellForRowAtIndexPath和didSelectRowAtIndexPath方法方法,谢谢。紧急,我用这个代码
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@\"cell\"]; 

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@\"cell\"];

    }


    cell.textLabel.text = [listData objectAtIndex:indexPath.row];


    [cell setAccessoryType:UITableViewCellAccessoryNone];
    for (int i = 0; i < selectedindexes.count; i++) {
        NSUInteger num = [[selectedindexes objectAtIndex:i] intValue];

        if (num == indexPath.row) {
            [cell setAccessoryType:UITableViewCellAccessorycheckmark];
            // Once we find a match there is no point continuing the loop
            break;
        }
    }
    

解决方法

如果我正确理解了您的问题,则说明您拥有一个数组,并且每当选择了行时就将索引添加到该数组中。那行不通。 我建议您有一个字典来映射选定的行,
NSMutableDictionary *selectedIndexDict;
用您的
didSelectRowAtIndexPath:
方法,
[selectedIndexDict setValue:[NSNumber numberWithBool:YES] forKey:[NSString stringWithFormat:@\"%d\",indexPath.row]];
而且,以您的
cellForRowAtIndexPath:
方法,
[cell setAccessoryType:UITableViewCellAccessoryNone];

if ([[selectedIndexDict valueForKey:[NSString stringWithFormat:@\"%d\",indexPath.row]] boolValue]) {

    [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。