Xcode 5 Storyboard在以编程方式创建新VC时未创建UIViewController布局

1 interface-builder storyboard uiviewcontroller ios xcode5

我一直在尝试使用新的xcode 5 storyboard范例,而不是专门创建.xib文件.我有两个VC - 第一个是由Xcode创建的,第二个是通过将UIViewController放入InterfaceBuilder创建的.

我的问题是,即使我给了我的第二个VC一个自定义类并将头文件导入第一个VC,当我以编程方式创建第二个VC时,它不符合我在InterfaceBuilder中设置的设计.第一个是.

我创建第二个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];
    }];
Run Code Online (Sandbox Code Playgroud)

......看起来很好,做了我想要的 - 带来了一个新的视图控制器.事实是,它没有加载我在IB中设置的布局.我尝试交换alloc] init]方法,initWithNibName:bundle:但意识到我没有笔尖...有没有办法在IB中建立这种连接而不创建.xib文件,或者我误解了Xcode 5的新流程?我知道Identity Inspector中有一个Storyboard ID属性,但是如何使用它呢?如果他们没有被默认放在那里,我不想做"旧方式"的事情......

TL; DR - 我希望我的IB布局的ViewController能够在Xcode 5默认故事板流程中以编程方式调用它的方式.

添加了一些代码,使新的viewcontroller的imageview有一个图像,但它没有出现...

编辑:我不得不添加self.theImageView.image = theImage;viewDidLoad方法在我的新viewcontroller.h文件-但不应该它已经做到这一点的代码,我写的吗?

Vla*_*mir 5

如果您在故事板中设置控制器,则应从中加载它.如果您的代码已经位于同一故事板的某个控制器中,您可以通过以下方式执行此操作:

UIStoryboard *sb = self.storyboard;
NCPhotoViewController * newController = [sb instantiateViewControllerWithIdentifier:@"SomeIdentifier"];
...
Run Code Online (Sandbox Code Playgroud)

您还需要将视图控制器的Storyboard ID设置为"SomeIdentifier",以便storyboard知道要实例化哪个控制器.以下是IB在"工具"窗格中的显示方式: 在此输入图像描述