0

データオブジェクトへの参照を渡す際に問題が発生します。提示するViewControllerには、データオブジェクトへの参照があります。モーダルビューコントローラーはナビゲーションコントローラーに接続されており、そのルートビューコントローラーです。これが私がそれをしている方法です:

VCの提示:

- (IBAction)changeCustomerButtonPress:(UIButton *)sender {    
    UINavigationController *customersNC = [self.storyboard instantiateViewControllerWithIdentifier:@"customersNC"];
    SCCustomersVC *customersVC = (SCCustomersVC *)[self.storyboard instantiateViewControllerWithIdentifier:@"customersVC"];
    customersVC.dataObject = self.splitVC.dataObject;

    //at this point, customersVC.dataObject exists

    [self presentViewController:customersNC animated:YES completion:nil];
}

モーダルVCが表示されると、self.dataObjectはnilになります。

- (void)viewWillAppear:(BOOL)animated
{       
    //self.dataObject is nil here.
}

これを行う正しい方法は何ですか?

4

1 に答える 1

2

IBのナビゲーションコントローラーにはルートビューコントローラーがありますか?そうでない場合は、そうではありません。ただし、SCCustomersVCがあると仮定すると、SCCustomersVCをインスタンス化するべきではありません。これは、ナビゲーションコントローラーがインスタンス化されたときにインスタンス化するためです。データを渡すには、topViewControllerを使用してそのコントローラーへの参照を取得します。

SCCustomersVC *customersVC = (SCCustomersVC *)[customerNC topViewController];
    customersVC.dataObject = self.splitVC.dataObject;
于 2013-03-18T00:17:53.983 に答える