0

選択した人を配列で見つけようとしています。誰も選択されていない場所を正しく取得していますが、グループ内の 1 人が選択されると、グループ内のすべての人が選択されます。

頭を悩ませる長いセッションの後、何か明らかなことがあるかどうかを確認するために、いくつかの助けを借りることができました。

このアクションは次の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 であり、選択されている場合はセルの左側にチェックマーク イメージがあり、選択されていない場合は別のイメージがあります。どうもありがとう。

4

1 に答える 1