4

私は、detailviewcontroller のナビゲーション バーに分割ビューと右バー ボタンを備えた iPad アプリを持っています。

このボタンは、ナビゲーション コントローラーと 2 つのテーブル ビューで構成されるポップオーバーを呼び出します。次の図に示すように

ここに画像の説明を入力

写真では絵コンテが小さいので、説明を加えます。白いコントローラは、ナビゲーション コントローラ内にある detailViewController (splitviewcontroller の右側) です。白いビューの右側にある 3 つのビューは、左から順に、navigationController、firstTableView、secondTableView です。

私の問題は、パラメーターを最初のテーブル ビューに渡して正しく構成する必要があることです。

View Controllerが同じNavigation Controllerを共有していたとき、私はそのようにしていました。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"popoverButtonSegue"]){
        MyPopoverFirstTableViewController *popoverFirstTVC = [[MyPopoverFirstTableViewController alloc] init];

        popoverFirstTVC = segue.destinationViewController;
        popoverFirstTVC.property1 = aProperty1;
        popoverFirstTVC.property2 = aProperty2;
    }
}

私の問題は、宛先コントローラーが popoverFirstTableViewController ではなく、NavigationController であり、ナビゲーションコントローラーにはもちろん「property1」と「property2」がないため、これを行うとエラーが発生することです。

おそらくそれは基本的な質問ですが、私はここで立ち往生しています。

このテーブルが Navigation Controller 内にあるときに、定義したプロパティのいくつかを割り当ててテーブルビューを構成するにはどうすればよいですか?

4

2 に答える 2

4

すべてのクレジットは@Michael Kernahanに属しますが、彼が回答として投稿しない限り、同じ回答を探している人々のフォローアップとして書きます.

私の場合、問題は、ナビゲーションコントローラーである宛先コントローラーを割り当てていることでした

popoverFirstTVC = segue.destinationViewController; 

私がすべきことは、そのナビゲーション コントローラーの topViewController にアクセスすることです。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"popoverButtonSegue"]){
        MyPopoverFirstTableViewController *popoverFirstTVC = (MyPopoverFirstTableViewController *)((UINavigationController *) segue.destinationViewController).topViewController;

        popoverFirstTVC.property1 = aProperty1;
        popoverFirstTVC.property2 = aProperty2;
}
于 2012-11-29T16:41:35.803 に答える