7

UITableViewインスタンスを取得して実装しました:

tableView:canEditRowAtIndexPath:
tableView:editingStyleForRowAtIndexPath:
tableView:shouldIndentWhileEditingRowAtIndexPath:
tableView:canMoveRowAtIndexPath:
tableView:moveRowAtIndexPath:toIndexPath:

その後、並べ替えコントロールを使用してすべてのセルを表示できます。

Appleのヘッダーには次のように書かれています。

@property(nonatomic) BOOL showsReorderControl; // default is NO

デフォルト値がNOなぜリオーダーコントロールが表示されるのですか?

更新:tableView:cellForRowAtIndexPath:セルが作成された直後 のプロパティの値も確認しました:

(lldb) p [c showsReorderControl]
(BOOL) $1 = NO
4

2 に答える 2

10

からYESを返すと、をYEStableView:canMoveRowAtIndexPath:に設定するのと同じことを行いますshowsReorderControl。これらは、並べ替え制御を有効にする2つの異なる方法にすぎません。

実際、3番目の方法があります-オプションがないことを決して文句を言わないでください!;)のドキュメントからtableView:canMoveRowAtIndexPath:

このメソッドを使用すると、デリゲートは、指定された行の並べ替えコントロールが表示されないように指定できます。デフォルトでは、データソースがtableView:moveRowAtIndexPath:toIndexPath:メソッドを実装している場合、並べ替えコントロールが表示されます。

于 2012-12-01T15:05:34.273 に答える
1

現在のAppleのドキュメントを読むと、showsReorderControlまったく役に立たないようです。

UITableViewCell

並べ替えコントロールを表示するには、このプロパティを設定するだけでなく、UITableViewDataSourceメソッドtableView:moveRowAtIndexPath:toIndexPath:を実装する必要があります。

UITableViewDataSource

デフォルトでは、データソースがtableView:moveRowAtIndexPath:toIndexPath:メソッドを実装している場合、並べ替えコントロールが表示されます。

このドキュメントから、私は次のように結論付けます。

1-並べ替えコントロールを表示する唯一の方法は、を実装するtableView:moveRowAtIndexPath:toIndexPath:ことです。これは、すべてのセルのコントロールを表示します。

2-セルにコントロールを表示させたくない場合は、からNOを返す必要がありますtableView:canMoveRowAtIndexPath:

3-showsReorderControl並べ替えコントロールが表示されているかどうかを制御できません。

于 2015-06-19T17:57:40.677 に答える