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
、それはハックな方法であり、代わりにデータモデルを確実に変更する必要があります。