3

すべてのテーブルビューセルにUISwitchViewがあり、セルを並べ替えることができます。問題は、テーブルビューでsetEditing = trueを設定すると、アクセサリ(スイッチビュー)が消えることです。両方を維持する方法はありますか?

編集

static NSString *CellIdentifier = @"Edit Sources Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

// Configure the cell...
NSUInteger row = [indexPath row];
Source *source = [self.sources objectAtIndex:row];

cell.textLabel.text = source.name;

UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
switchView.tag = row;
cell.accessoryView = switchView;
[switchView setOn:source.switchedOn animated:NO];
[switchView addTarget:self action:@selector(switchChangedForSource:)  forControlEvents: UIControlEventValueChanged] ;
4

4 に答える 4

5

UITableViewCellにはeditingAccessoryView、セルが編集モードのときに表示されるビュー用の追加のプロパティ、があります。

accessoryViewとプロパティの両方に同じUISwitchインスタンスを割り当てることができるかどうかeditingAccessoryView、または2つのインスタンスを作成する必要があるかどうかはわかりません。(ビューは一度に1つの親しか持つことができませんが、UITableViewCellは実際にビューを表示する作業を行っているため、このケースを処理するのに十分賢い場合があります。)

于 2012-06-27T14:51:31.773 に答える
2

はい、それらを維持する方法があります。

カスタムセルビューを作成する必要があります。スイッチビュー(またはその他のもの)を含むすべてのUI要素をこのカスタムセルに追加できます。カスタムセル上にあるため、テーブルの編集をtrueに設定しても問題はありません。 UI要素を表示しても消えません。

標準のテーブルセルのUI要素はあなたではなく制御されています。これが、組み込みのアクセサリの1つだけを同時に表示できる理由です。カスタムセルビューを使用する場合は発生しません。

カスタムセルビューに精通していることを願っていますが、そうでない場合は、正確なコードも提供できますが、アイデアはこれです。

于 2012-06-27T14:39:11.843 に答える
1

並べ替えの制御下で消えることを意味する場合はautoresizingMask、コードでスイッチを追加する場合はプロパティを調整するか、IBで構築した場合は自動サイズ設定をグラフィカルに調整することで、別の場所に再配置できます。

于 2012-06-27T14:26:41.707 に答える
0

テーブルビューセルをサブクラス化する必要があると思います。サブクラスがYESの場合、プログラムでUISwitchを左に移動します。self.isEditingUITableViewCell

于 2012-06-27T14:25:34.613 に答える