0

昨夜、iOS SDK のかなり不便な「機能」に出くわしたので、その発見と解決策を皆さんと共有したいと思いました。また、より良い解決策があるはずです。

シナリオ

私は、お気に入りの項目に対して、他のすべての項目に対して、2 つのセクションを持つテーブル ビューを設定しました。テーブル ビューの行をタップすると、項目がお気に入りとしてマークされているかどうかが切り替わります。お気に入りのアイテムセクションの行をタップすると、お気に入りから削除され、他のすべてのアイテムセクションの行をタップすると、このアイテムがお気に入りに追加されます。

お気に入りの状態が切り替えられると、私はmoveRowAtIndexPath:toIndexPath:素敵な小さなアニメーションを実行して、行をお気に入りセクションから他のすべてのセクションに移動します。

問題

したがって、ユーザーがお気に入りの状態を切り替えることができるだけでなく、お気に入りセクションのすべてのアイテムを再配置できる必要があるため、問題が発生しました。したがって、お気に入り項目セクションの各行に並べ替えコントロールを表示したいと考えました。

ただし、呼び出し時にセルは再描画されずmoveRowAtIndexPath:toIndexPath:、fromIndexPath と toIndexPath は両方とも可視領域にあります。これは、お気に入り項目セクションに新しい行を追加するときに、並べ替えコントロールが表示されないことを意味します。

4

1 に答える 1

0

解決

ドキュメントのページごとに調べ、StackOverflow のスレッドを調べ、さまざまなことを試した後、最終的に解決策を見つけました。

呼び出した直後にmoveRowAtIndexPath:toIndexPath:、次の行も呼び出します。

[cell setEditing:NO]
[cell setEditing:YES]

これにより、そのセルは再配置の制限が変更されたことを認識し、再配置コントロールを適切に表示/非表示にします。

この解決策は非常にハックであることがわかったので、より良い解決策について聞いていただければ幸いです。しかし、少なくとも、他の人が楽しめるように、解決策が今ここにあります.

于 2012-08-14T11:14:58.997 に答える