1

私は、新しい xcode 5 ストーリーボード パラダイムを使用しようとしてきましたが、特に .xib ファイルを作成するのではありません。2 つの VC があります。1 つ目は Xcode によって作成され、2 つ目は UIViewController を InterfaceBuilder にドロップすることによって作成されました。

私の問題は、2 番目の VC にカスタム クラスを指定し、ヘッダーを最初の VC にインポートしたにもかかわらず、プログラムで 2 番目の VC を作成すると、InterfaceBuilder で設定した設計に準拠しないことです。最初のものはそうします。

2 番目の VC を作成するコードは次のようになります (ImagePickerControllerDelegate メソッド内にあります)。

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage];

    NCPhotoViewController *newController = [[NCPhotoViewController alloc] init];
    newController.theImage = chosenImage;
    ** NEW CODE newController.theImageView.image = newController.theImage;

    [self dismissViewControllerAnimated:YES completion:^{
        [self presentViewController:newController animated:YES completion:NULL];
    }];

...これは問題ないようで、私がやりたいことを行います-新しいView Controllerを起動します。問題は、IB で設定したレイアウトでは読み込まれないということです。alloc] init]メソッドを交換しようとしましたinitWithNibName:bundle:が、ペン先ではないことに気付きました... .xib ファイルを作成せずに IB でこの接続を確立する方法はありますか、それとも Xcode 5 の新しいフローを誤解していますか? Identity Inspector に Storyboard ID 属性があることは知っていますが、それをどのように活用すればよいでしょうか? デフォルトでそこに配置されていない場合、「古い方法」でやりたくありません...

TL;DR - IB レイアウトの ViewController が、Xcode 5 のデフォルトのストーリーボード フローでプログラムによって呼び出されたときに、意図したとおりに見えるようにしたいと考えています。

新しいviewcontrollerのimageviewに画像を表示するコードを追加しましたが、表示されません...

編集:新しいviewcontroller.hファイルにメソッドを追加するself.theImageView.image = theImage;必要viewDidLoadがありました-しかし、私が書いたコードですでにそれを行うべきではありませんか?

4

1 に答える 1

5

ストーリーボードでコントローラーをセットアップする場合は、そこからロードする必要があります。コードが既に同じストーリーボードの一部のコントローラーにある場合は、次の方法で実行できます。

UIStoryboard *sb = self.storyboard;
NCPhotoViewController * newController = [sb instantiateViewControllerWithIdentifier:@"SomeIdentifier"];
...

また、View Controller の Storyboard ID を「SomeIdentifier」に設定して、Storyboard がインスタンス化するコントローラーを認識できるようにする必要があります。IB の [ユーティリティ] ペインでは次のように表示されます。 ここに画像の説明を入力

于 2013-09-24T08:29:16.033 に答える