我一直在尝试使用新的 xcode 5 故事板范例,而不是专门创建 .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];
}];
...这看起来不错,并且可以满足我的要求 - 带来了一个新的视图控制器。问题是,它不会加载我在 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
方法 - 但它不应该已经用我编写的代码做到这一点吗?