3

アップルノートアプリのビルドと同様に、スワイプして選択した行を削除すると、利用可能な最も近い行が自動的に選択されます。

ロジックは次のようになります。

行数>0の場合、deleted_row==最後の行の場合は
deleted_row_index-1行を選択します。
それ以外の
場合はdeleted_row_index+1行
の終了を選択し
ます 。

commitEditingStyleイベントで上記のロジックを実装しようとしましたが、選択に失敗します。selectRowAtIndexPath
ロジック は、このイベントでは機能しません。ボタンに適用すると、機能します。

何か案が?

4

2 に答える 2

3

これを解決する1つの方法は、メソッドを使用することperformSelector:withObject:afterDelay:です。

あなたの中からtableView:commitEditingStyle:forRowAtIndexPath:あなたはすることができます:

NSIndexPath *indexPathToSelect = ...
[self performSelector:@selector(selectRowAtIndexPath:) 
           withObject:indexPathToSelect
               afterDelay:0];

次に、ViewControllerでselectRowAtIndexPath:メソッドを定義します

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath {
  [self.tableView selectRowAtIndexPath:indexPath 
                              animated:YES 
                        scrollPosition:UITableViewScrollPositionTop];
}
于 2011-09-03T14:41:35.623 に答える
0

行を削除するときは、そのindexPathが必要です。次に、メソッドを呼び出します

(void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

indexPathの場合、indexPath.rowを1ずつ増減することにより、新しいindexPathを設定できます。

scrollPositionは、tableViewを上にスクロールするか下にスクロールするかを設定し、アニメーションはクリアにする必要があります。

結局のところ、そのUITableViewCellを手動で選択します。

[cell setSelected:YES];
于 2010-06-04T16:50:52.820 に答える