2

UITableView が編集モードのときに、これが tableviewcells の再配置のデフォルト プロパティであることはわかっています。ユーザーは、UITableViewController によって処理される行を並べ替えるだけです。

Apple Docに従って:行の並べ替え

今私がやりたいことは、セルを他のセルの上にドラッグすると、バックエンドセルが自動的に再配置されるべきではなく、ドラッグされたセルをドロップしたセルだけが再配置されるべきであり、2つのセル間の一種の交換です

理解を深めるために、下の画像を参照してください。Jones を Room1にシフトできるはずです & テーブルビュー コントローラーは自動的に Smith2 を Room3 にシフトできるはずです。

ここに画像の説明を入力

以下は、私が使用しているデリゲートメソッドです:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {

    NSString *temp = [roomstoringArray objectAtIndex:sourceIndexPath.row];
    [roomstoringArray removeObjectAtIndex:sourceIndexPath.row];

    [roomstoringArray insertObject:temp atIndex:destinationIndexPath.row];

   // [temp release];

}

問題は:

  1. セルを他のセルの上にドラッグしているときに、他のセルが自動的に再配置されるのを止めるにはどうすればよいですか。
  2. セルを他のセルの上にドラッグするときに呼び出されるデリゲート メソッドはありません 。セルをドロップしたときに呼び出されるメソッドはmoveRowAtIndexPathのみです。そのため、いくつかの条件を確認することさえできず、既存の TableView 内でこの機能強化の範囲が見つかりませんでした。

このような動作を停止して、残りの行が同じ indexPath.Alos にある場合にのみ 2 つのセル間のスワッピングを実行できる TableView のプロパティはありますか?

4

1 に答える 1

0

あなたが言及した問題については、ここから UITableView Delegates を確認してください
以下の方法は役に立ちます。

targetIndexPathForMoveFromRowAtIndexPath
canMoveRowAtIndexPath

Swap b/w two rows の場合、この回答でアイデアを得ることができます。

于 2013-06-10T11:59:38.837 に答える