0

次のように動作します: 配列から表示されたアイテムを含むテーブル ビューがあります。各テーブル ビュー セルのボタンはブール値を返します。

検索バーでセルを検索すると、セルのインデックスが元のテーブルの値から変更されindexPath.row、ボタンがクリックされたときに間違った値が使用さindexPathれます。

私のボタンからの関連コード:

(void)clickedButton:(UIButton*)sender {

NSLog(@"Row: %d", sender.tag);

NSIndexPath* indexPath = [NSIndexPath indexPathForRow:sender.tag inSection:0];
Stories *story = (Stories *)[self.fetchedResultsController objectAtIndexPath:indexPath];
BOOL isSaved = [story.isBookmarked boolValue];
story.isBookmarked = [NSNumber numberWithBool:!isSaved];

私の関連コードcellForRowAtIndexPath

if (tableView == self.searchDisplayController.searchResultsTableView){

     [cell.button setSelected:[story.isBookmarked boolValue]];
    cell.button.tag = indexPath.row;

    }

else
{

         [cell.button setSelected:[story.isBookmarked boolValue]];
    cell.button.tag = indexPath.row;

}
4

1 に答える 1

0

indexPath.rowは、検索結果に基づいて変更される場合があります。を取得するには、このコードを試してくださいindexPath

(void)clickedButton:(UIButton*)sender {
    UIButton *button = (UIButton *)sender;
    // Get the UITableViewCell which is the superview of the UITableViewCellContentView which is the superview of the UIButton
    UITableViewCell *cell = (UITableViewCell*)[[button superview] superview];

    NSIndexPath* indexPath = [subListTable indexPathForCell:cell];
}
于 2013-01-16T16:59:53.517 に答える