の次の行を使用してUITableView
、編集モードで複数選択用に自動的に設定される がありますviewDidLoad
。
self.tableView.allowsMultipleSelectionDuringEditing = YES;
[self setEditing:YES animated:YES];
ただし、各行の左側に自動的に表示されるチェックマークではなく、背景色を変更して行が選択されたことを示したいと思います。(たとえば、メールアプリでメーリングリストを編集するときに表示されるもの、またはこのSOの質問で議論されているもの。)それらのチェックボックスを取得できないことを除いて、ほとんどの部分で機能しています。UITableView
を編集モードにする一部として自動的に作成され、削除されます。
以下は私が取り組んでいるコードです:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return _Hierachy.cellCount;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *testCell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(testCell == nil) {
testCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
[[testCell textLabel] setText:@"Test Cell"];
return testCell;
}
これらはUITableView
私がこれまでに得た唯一の方法なので、他のすべてはデフォルトの動作でなければなりません。
編集モードで、左側にあるチェックマークを非表示にする方法を知っている人はいますか? セルのアクセサリ部分のチェック マークについて多くの質問を見てきましたが、私が理解しているように、これは別のものです。メソッドについて話している人も見ましtableView:didSelectRowAtIndexPath:
たが、これらのチェックマークは、テーブルが編集モードになると作成され、ユーザーが [完了] をタップすると消えるので、そのメソッドは関係ないようです。
私が最も近いのは、この方法を見つけることです:
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath{
return NO;
}
しかし、それはセルのコンテンツがインデントされてチェックマークのスペースを空けることを妨げているだけです。チェックマークは引き続き表示されます。
これらのチェックマークを非表示にして、編集モードで複数選択を許可する方法はありますか? それとも、これらのチェックマークはUITableView
、複数選択が有効になっている編集モードでは必須の動作ですか?
編集:私は(しぶしぶ)、チェックマークのフレームが画面から消えるまで移動するなど、ややハックな回答を受け入れます。このアプリは内部使用のためのものであり、App Store で承認される必要はありません。しかし、UITableView
編集モードに移行するとチェックマークが自動的に作成されるため、変更するオブジェクトとしてチェックマークを取得する方法さえわかりません。どんな助けでも大歓迎です!