尝试识别选定的表格视图单元格

时间:2013-07-04 10:46:35

标签: objective-c arrays ios6 uitableview

我正在尝试在阵列中找到所选人员。我正确地得到了没有人被选中的地方,但是,如果选择了一个组中的一个人,则该组中的所有人都被选中。

经过长时间的讨论,我可以使用一些帮助来看看是否有明显的东西。

此操作正在cellForRowAtIndexPath中进行,如下所示:

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"%s", __FUNCTION__);
    static NSString *pCell = @"Cell";

    PeopleCell *cell = (PeopleCell *)[aTableView dequeueReusableCellWithIdentifier:pCell];

    if (cell == nil) {
        cell = [[PeopleCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:pCell];
    }

    people = [peopleArray objectAtIndex:[indexPath row]];
    NSString *text = [people objectForKey:@"name"];
    cell.textLabel.text = text;

    if (selectedPeopleinGroup.count == 0) {
        //no people selected in this group
        NSLog(@"none");
        cell.isSelected = [selectedPeopleinGroup containsObject:text] == NO;       
    } else {
        //there are some people in this group - find out who they are
        NSLog(@"some");
        NSString *key1 =   [selectedPeopleinGroup valueForKey:@"personKey"];
        NSString *key2 = [people valueForKey:@"personKey"];

        NSLog (@"key1 %@", key1 );
        NSLog (@"key2 %@", key2 );

        if (key1 == key2) {
            cell.isSelected = [selectedPeople containsObject:text] == YES;
        } else {
            cell.isSelected = [selectedPeople containsObject:text] == NO;
        }

    }

    return cell;

}

单元格是一个子类UITableViewCell,如果选中,则在单元格的左侧有一个复选标记图像,如果没有选择,则在另一个图像上有一个不同的图像。非常感谢。

1 个答案:

答案 0 :(得分:1)

这看起来很奇怪:

NSString *key1 =   [selectedPeopleinGroup valueForKey:@"personKey"];

如果selectedPeopleInGroup是一个数组,那么valueForKey:将返回在数组中每个对象上调用valueForKey的结果数组。所以你要为一个字符串分配一个数组。

我很惊讶编译器没有发出关于此的警告。我也很惊讶日志语句没有显示奇数值。