0

JASidePanelコントローラー( https://github.com/gotosleep/JASidePanels )内に配置しているUITableviewがあります。initメソッドにデリゲートとデータソースを設定し、canEditRowAtIndexPathメソッドを実装しました。テーブルビューセルをスワイプしましたが、視覚的に何も起こりません。他の質問に目を通し、すべての提案を実装しましたが、削除ボタンを表示できません。誰かがこの行動を引き起こす原因を知っていますか?

4

3 に答える 3

8

tableView:editingStyleForRowAtIndexPath:デリゲートメソッドとtableView:commitEditingStyle:forRowAtIndexPath:データソースメソッドを実装する必要があります。これらがないと、セルの削除は表示されません。

YESデータソースメソッドから戻ってきていると思いますtableView:canEditRowAtIndexPath:(少なくとも適切な行について)。

于 2013-03-18T02:50:20.223 に答える
1

セルを削除するためにこのクラス独自のメソッドを試しましたか?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
   if (UITableViewCellEditingStyleDelete) {
      int k = [[tempArray objectAtIndex:indexPath.row] intValue];

      //Remove object from index 'k'.
   }
}

それはあなたを助けるかもしれません。

ありがとう。

于 2013-03-18T04:03:09.920 に答える
0

TableViewCellをスワイプしてUITableViewの削除アクションを実行します。次の3つのメソッドを実装する必要があります。-

このメソッドは、TableViewCellをスワイプすると削除ボタンを表示します。

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
       editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {

  NSUInteger row = [indexPath row];
  NSUInteger count = [posts count];

  if (row < count) {
    return UITableViewCellEditingStyleDelete;
  } else {
    return UITableViewCellEditingStyleNone;
  }
}

このメソッドは、ユーザーがTableViewCellのスワイプで行を削除したときに呼び出され、スワイプされた行は削除ボタンをタップすると削除されます。

- (void)tableView:(UITableView *)tableView 
        commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
        forRowAtIndexPath:(NSIndexPath *)indexPath {

  NSUInteger row = [indexPath row];
  NSUInteger count = [posts count];

  if (row < count) {
    [posts removeObjectAtIndex:row];
  }
}

最後に、このメソッドが呼び出され、行を削除した後にテーブルビューが更新されます。

- (void)tableView:(UITableView *)tableView 
                   didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath {

  [self updateViewTitle];
  [tableView reloadData];
}
于 2018-01-30T07:24:02.703 に答える