3

UISplitviewのサブビューであるuitableview(uipopover view)で複数行選択したい。選択した行情報は、分割ビューの詳細ペインのラベルに表示されます。

複数の行を選択できましたが、選択した行の情報を詳細ペインに表示できませんでした。

ヘルプ/スニペット コードをいただければ幸いです。

ありがとう、

4

2 に答える 2

1

テーブル ビュー コントローラーに次のコードを追加します。

- (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];
}
于 2012-06-07T09:27:39.817 に答える
1

サンプル コードが提供されないため、正確なスニペットを提供することはできません。tableView を埋める方法はたくさんあります。

それにもかかわらず、抽象的にどのように機能するかを説明します。現在の選択を含む配列が必要になるか、@ Ricard Pérez del Campo が提案したように、状態を含むデータモデルにプロパティを追加する必要があります (例: selected)。


ステップ 2 a)選択を変更するたびに、または
b)tableView画面に表示される (viewWillAppearおよびポップアップが表示される) たびに、このプロパティ (または配列) を確認します。

したがって、すべての場所から利用できる dataSource が必要です (あなたの場合、Popover、 、splitViewおよびdetailView)

1つはすでに機能しているとあなたは言っtableViewたので、2番目の問題はおそらく選択dataSourceです。
また、現在の選択範囲の配列を取得するメソッドがUITableView呼び出されます。indexPathsForSelectedRowsその選択を他のものに適用することもできますがtableView、それはハックな方法であり、代わりにデータモデルを確実に変更する必要があります。

于 2012-06-01T16:49:28.877 に答える