繁体   English   中英

iOS - Interface Builder Outlets未初始化

[英]iOS - Interface Builder Outlets Not Initialized

我在Interface Builder中创建了一个视图,其中一些标签和文本作为IBOutlets。 当我从我在Storyboard中定义的另一个视图中删除它时,我可以完美地查看此屏幕。 但是,我有另一个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];

-init不为你加载一个nib文件,如果你想加载一个nib使用-initWithNibName:bundle:

如果使用nib命名约定,则可以传递nil以加载名称与您的类和默认包匹配的nib,即[[PlantDetailViewController alloc] initWithNibName:nil bundle:nil] ,有关详细信息,请参阅-nibName的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM