2011-12-30 9 views
0

現在、配列をコピーしようとしていますが、私はプログラムで作成した新しいビューを持っています。私は実際には、通常のナビゲーションコントローラの構文でこれを行う方法を発見しました。私の問題は、私が新しいストーリーボードを使用していることです。同じことをするための構文もわかりません。ここで私が持っているコード..あなたが見ることができるよう、私はプログラム的に第2のビューコントローラを作成し、作成したView Controllerの配列変数にローカル配列のcustomerList.Listを格納しています配列をストーリーボードの新しいビューにプログラムでコピーする

CustomerListViewController *second = [[CustomerListViewController alloc] initWithNibName:@"CustomerListViewController" bundle: nil]; 
[second setValue:customerList.list]; 
// [self.navigationController pushViewController:second animated:YES]; 
[self performSegueWithIdentifier:@"LoginSegue" sender:self]; 

です。次のステップは、新規に作成されたビューを開くことです。コメントアウトされた行は、ナビゲーションコントローラの下でビューを開くための構文です。下の行はストーリーボードの方法ですが、作成したビューを指定することはありません。ストーリーボードがナビゲーションコントローラと同じことをするための構文を知る必要があります。

おかげ

答えて

3

あなたがseguesを使用している場合は、ここでCustomerListViewControllerの独自のインスタンスを作成しても意味がありません。 Segue自体がストーリーボードからView Controllerを作成し、ここで作成したインスタンスは何も行いません。

代わりにperformSegueWithIdentifier:sender:をここに呼び出してください。そして、このようprepareForSegue:sender:メソッドを実装します。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"LoginSegue"]) { 
     CustomerListViewController *destinationController = (CustomerListViewController *)segue.destinationViewController; 
     [destinationController setValue:customerList.list]; 
    } 
} 
+0

申し訳ありませんが、私が言及している必要があります..私は新しいビューは、ボタンを押すの下で呼び出されるため、プログラムで特定の時間にセグエを呼び出す必要がありますが、私は、接続を開く必要がいくつかの処理と計算を行います。プログラムで呼び出さなければ、それらの計算が完了する前にビューが開き、ビューが作成されると配列が空になります。 *編集*あなたが何を言っているか分かりません。私はこれを試してみる。 –

+0

問題ありません。私が言ったように、segueを開始する必要があるときは 'performSegueWithIdentifier:sender:'と呼ぶだけです。 –

+0

さて、これを試してみました。あなたが投稿したコードは、customerList.listにcustomerListというエラーが発生しています(これは、2番目のビューコントローラにあります)。私はちょうどリスト(2番目のビューコントローラの配列の名前)に変更しましたが、空で何も渡されません。このスタイルでは、最初のビューコントローラからの配列がどこに2番目のビューコントローラに渡されているのかわかりません。 –

関連する問題