選択した人を配列で見つけようとしています。誰も選択されていない場所を正しく取得していますが、グループ内の 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 であり、選択されている場合はセルの左側にチェックマーク イメージがあり、選択されていない場合は別のイメージがあります。どうもありがとう。