0

さて、私の問題は、ボタンをクリックするとテーブルビューの行を削除していることです.送信者のタグを取得してデータソース配列から削除し、テーブル...

cellForRowAtIndexPath 内 (関連部分は deleteBtn です): *以下は修正済みの動作コードです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"questionCell";

    HTQuestionCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    if(cell == nil)
    {
        cell = [[HTQuestionCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    NSDictionary *dict = [NSDictionary dictionary];
    dict = _questionsArray[indexPath.row];

    NSMutableAttributedString *atbString;
    NSMutableAttributedString *atbQuestionString;

    atbString = [[NSMutableAttributedString alloc] initWithString:[dict objectForKey:@"person"] attributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:34]}];

    atbQuestionString = [[NSMutableAttributedString alloc] initWithString:[dict objectForKey:@"question"] attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:34]}];

    [atbString appendAttributedString:atbQuestionString];

    [cell.questionTxtView setAttributedText:atbString];

    [cell.deleteBtn setTag:indexPath.row];
    [cell.showBtn setTag:indexPath.row];

    NSLog(@"Delete Button : %@", cell.deleteBtn);

    [cell.deleteBtn addTarget:self action:@selector(deleteMsg:) forControlEvents:UIControlEventTouchUpInside];
    [cell.showBtn addTarget:self action:@selector(showMsg:) forControlEvents:UIControlEventTouchUpInside];

    return cell;
}

そして、delete メソッドでこれを行います。

UIButton *tempButton = sender;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:tempButton.tag inSection:0];
[_questionsArray removeObjectAtIndex:tempButton.tag];
[_dataTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[_dataTable reloadData];

reloadData の代わりに beginUpdates と endUpdates も試しましたが、どれも効果がありません...

だから、私がそれをテストしているとき、私は2つの行を持っています...最初はタグが正しく設定されています-0と1...しかし、次に行0を削除し、新しい最初の行のタグを確認すると、まだありますタグ = 1、今は 0 のはずですが、削除後にボタンのタグが更新されないようです...

4

1 に答える 1

6

解決策 1: 使用:

[_dataTable reloadData];

cellForRowAtIndexPath が再度呼び出されるため、タグをリセットします。

解決策 2: 使用:

[_dataTable beginUpdates];
[_dataTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[_dataTable endUpdates];

また、 cellForRowAtIndexPath を呼び出してタグを更新します

于 2013-02-04T04:00:01.837 に答える