我已经在Interface Builder中创建了一个视图,其中一些标签和文本作为IBOutlets。当我从情节提要中定义的另一个视图中选择该屏幕时,可以完美地查看该屏幕。
但是,我还有另一个XIB和一个关联的UIViewController,我想从中访问该视图。因为我的XIB不在情节提要中,所以我无法选择它。相反,我必须以编程方式执行过渡。

    PlantDetailViewController *plantDetailVC = [[PlantDetailViewController alloc] init];
    [self.currentNavigationController pushViewController:plantDetailVC animated:YES];

执行此代码后,它将过渡到视图,但视图只是空白。我已经调试了代码,它进入了viewDidLoad和viewWillAppear,但是我所有的IBOutlets都为NIL ....所以它什么也没有显示在屏幕上!

谁能告诉我为什么他们可能是NIL,以及如何初始化它们?

谢谢

布赖恩

最佳答案

听起来您好像在说您在情节提要中设置了PlantDetailViewController,并且在情节提要之外创建了一些OtherViewController。现在,您希望OtherViewController实例化在情节提要中设置的PlantDetailViewController

假设您的故事板名为MainStoryboard.storyboard

首先,您需要在情节提要中设置PlantDetailViewController的标识符。您可以在“属性”检查器的“视图控制器”部分下执行此操作。假设您将其设置为PlantDetail

然后,在OtherViewController中,这应该起作用:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
PlantDetailViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"PlantDetail"];
[self.currentNavigationController pushViewController:vc animated:YES];

10-07 19:37