1

私はObjective Cでプログラミングするのが初めてなので、これは私がやっている、またはやっていない本当にばかげたことだと感じています...

私は iPhone アプリを持っていて、あるビューから別のビューに移動しようとしています。私はセグエを接続し、それを呼び出すと、次のようになります。

[self performSegueWithIdentifier:@"ShowPolicyInformation" sender:sender];

それはうまく動作します。しかし今、私は自分の新しいビューに値を渡したいと思っています。そのため、いくつかのプロパティをセットアップし、より手動でナビゲートしようとしています:

PolicyInfoViewController *pol =[[PolicyInfoViewController alloc] initWithNibName:@"PolicyViewController" bundle:nil];
pol.PropertyOne=txtOne.text;
pol.strPropertyTwo=txtTwo.text;
[[self navigationController] pushViewController:pol animated:YES];

performSeque コードを上記のコードに置き換えると、正常にビルドされますが、実行すると次のエラーが発生します: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle (loaded) ''MainMobileViewController'' という名前の

この問題のヘルプを検索すると、表示されるすべての提案が、.xib ファイルの名前が正しいことを確認することについて話しています....そして、.xib がないため、ここで完全に迷っています。私が見ることができるファイル。私はストーリーボードで作業しており、ビューをその上にドラッグ/ドロップして、作成したクラスに接続しています。だから...私はどんな初心者の間違いを犯していますか? 私は何が欠けていますか?私は xCode 4.4 を使用していますが、これはこれらの検索で見つけたものとは異なるコードですか? ヘルプやアドバイスをいただければ幸いです。

4

1 に答える 1

0

ストーリー ボードのみを使用してこれを実行でき、PolicyInfoViewController 用に別の nib ファイルを用意する必要はありません。おそらく、この方法で実行する方が簡単でしょう。

そのため、コードの最初の行を保持します。

[self performSegueWithIdentifier:@"ShowPolicyInformation" sender:sender];

PolicyInfoViewController のプロパティを操作するには、このメソッドをオーバーライドする必要があります

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"ShowPolicyInformation"]) 
    {
        PolicyInfoViewController *pol = segue.destinationViewController;
        pol.PropertyOne=txtOne.text;
        pol.strPropertyTwo=txtTwo.text;
    }
}

では、ここで何が起こっているのでしょうか? ストーリー ボードから特定のセグエを実行するようにコントロールに指示しているコードの最初のビット。特定のセグエが呼び出されたときに何をすべきかをコントロールに指示している 2 番目のビット。

于 2012-08-01T17:59:35.797 に答える