最近、アプリにユーザー名のインデックス作成機能を実装しました。ユーザーがインデックス パスをタップすると、各セクションの行にアクセスして受信者配列に追加しようとしています。objectAtIndex: メソッドにさまざまな値を渡そうとしましたが、どれも機能していないようです。indexPathForRow:inSection: メソッドで正しいインデックス行とセクションをログに記録できますが、戻り値は整数ではなく indexPath です。したがって、私の objectForIndex: メソッドの何かは明らかに正しくありません。どんなヘルプやリファレンスも素晴らしいでしょう。乾杯!
この行:
PFUser *user = [self.friends objectAtIndex:indexPath.section];
セクションでタップした名前に関係なく、各セクションの最初のユーザー名のみを返します。そのため、セクションだけでなく、さらに行にアクセスする必要があります。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.tableView deselectRowAtIndexPath:indexPath animated:NO];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
int section = indexPath.section;
int row = indexPath.row;
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:row inSection:section];
NSLog(@"newIndexPath: %@", newIndexPath);
PFUser *user = [self.friends objectAtIndex:indexPath.section];
if (cell.accessoryType == UITableViewCellAccessoryNone) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[self.recipients addObject:user.objectId];
NSLog(@"added:%@",user);
}
else {
cell.accessoryType = UITableViewCellAccessoryNone;
[self.recipients removeObject:user.objectId];
NSLog(@"removed:%@",user);
}
[self.currentUser saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (error) {
NSLog(@"Error %@ %@", error, [error userInfo]);
}
}];
}