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

发布于 2024-11-09 07:39:14 字数 1090 浏览 0 评论 0原文

大家好,我知道这是一个常见问题,但请帮助我。我有一个表格视图,在其中显示来自 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;
        }
    }

hi everybody i know it's a frequent question but please help me. i have a tableview in which i display data from an NSArray. i want to choose multiple rows with the UITableViewCellAccessoryCheckmark. but when i scroll checkmarks disappear. everybody talk about reusable cell. I understand this concept but can't resolve my problem. So please please can someone give me the implementation of cellForRowAtIndexPath and didSelectRowAtIndexPath methods thank you. It's urgent.I use this code

-(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;
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱情眠于流年 2024-11-16 07:39:14

如果我正确理解您的问题,您将拥有一个数组,并在选择行时将索引添加到数组中。那是行不通的。
我建议您有一个字典来映射选定的行,

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];
}

If I understand your problem correctly, you are having an array and adding the indexes to the array whenever the rows are selected. That won't work.
I suggest you to have a dictionary to map the selected rows,

NSMutableDictionary *selectedIndexDict;

In your didSelectRowAtIndexPath: method,

[selectedIndexDict setValue:[NSNumber numberWithBool:YES] forKey:[NSString stringWithFormat:@"%d", indexPath.row]];

And, in your cellForRowAtIndexPath: method,

[cell setAccessoryType:UITableViewCellAccessoryNone];

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

    [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文