UISplitviewのサブビューであるuitableview(uipopover view)で複数行選択したい。選択した行情報は、分割ビューの詳細ペインのラベルに表示されます。
複数の行を選択できましたが、選択した行の情報を詳細ペインに表示できませんでした。
ヘルプ/スニペット コードをいただければ幸いです。
ありがとう、
UISplitviewのサブビューであるuitableview(uipopover view)で複数行選択したい。選択した行情報は、分割ビューの詳細ペインのラベルに表示されます。
複数の行を選択できましたが、選択した行の情報を詳細ペインに表示できませんでした。
ヘルプ/スニペット コードをいただければ幸いです。
ありがとう、
テーブル ビュー コントローラーに次のコードを追加します。
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.allowsMultipleSelection = YES;
}
テーブル ビュー デリゲートに次のように追加します。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *selectedRows = [tableView indexPathsForSelectedRows];
NSMutableArray *mySelectedObjects = [NSMutableArray array];
for (NSIndexPath *indexPath in selectedRows) {
MyObject *object = [datasource objectAtIndex:indexPath.row];
[mySelectedObjects addObject:object];
}
[self showSelectedObjectsInDetailPane];
}
サンプル コードが提供されないため、正確なスニペットを提供することはできません。tableView を埋める方法はたくさんあります。
それにもかかわらず、抽象的にどのように機能するかを説明します。現在の選択を含む配列が必要になるか、@ Ricard Pérez del Campo が提案したように、状態を含むデータモデルにプロパティを追加する必要があります (例: selected)。
ステップ 2 a)選択を変更するたびに、または
b)tableView画面に表示される (viewWillAppearおよびポップアップが表示される) たびに、このプロパティ (または配列) を確認します。
したがって、すべての場所から利用できる dataSource が必要です (あなたの場合、Popover、 、splitViewおよびdetailView)
1つはすでに機能しているとあなたは言っtableViewたので、2番目の問題はおそらく選択dataSourceです。
また、現在の選択範囲の配列を取得するメソッドがUITableView呼び出されます。indexPathsForSelectedRowsその選択を他のものに適用することもできますがtableView、それはハックな方法であり、代わりにデータモデルを確実に変更する必要があります。