これはかなり単純な状況です:
独自のプロパティ、アウトレットなどを備えたカスタム UITableViewCell クラスがあります。その中には 2 つの UIButtons -> LikeとDislikeがあります。それらは、コメント ボタンの好きなボタンまたは嫌いなボタンと考えることができます。
IBActions を次のように追加しました (CustomCell クラスではなく、TableViewController で):
- (IBAction)likeComment:(UIButton *)sender {
CustomTableCell *thisCell = (CustomTableCell *)[[[sender superview] superview] superview]; // to fetch that cell from view
RSSItem *item = [commentsToDisplay objectAtIndex:indexPath.row];
//code to set NSUserDefault value for the comment ID, so it can never be voted for again
[self.tableView reloadData];
}
CellForRowAtIndexPath で、現在のアイテムのユーザーの既定値が選択されているかどうかを確認し、選択されている場合はボタンを無効にします (両方ではなく、好きか嫌いかを選択できるため、すべてのボタンを無効にする必要があります)。
if((/* get NSUserDefault for the ID*/) == YES){
[cell.likeButton setEnabled:NO];
[cell.dislikeButton setEnabled:NO];
}
ここでは、適切なセルの indexPath が呼び出され、フェッチされた行のアイテムとアイテムの ID が正しいです。
問題は、現在選択されているボタンに加えて、ランダムなボタン (再利用されたセルの一部) も選択される (無効になる) ことです。アウトレットからそれらを無効にしようとすると、同じことが起こります。もちろん、それは受け入れられません。すべてのさまざまな組み合わせを試してみましたが、どうやら間違った考え方をしているようです。
何か提案やリンクはありますか? または、これらのボタンをアクションと場所に正しく接続する方法。