【发布时间】:2015-03-21 19:34:37
【问题描述】:
Apple 已经有一段时间为我们提供了故事板,我从一开始就在关注它的演变,它有一些优点和缺点,但如果你将它与老式的“xib”进行比较,可以肯定这是一个“未来” " 文件...
我在这里知道的是一种叫做“外部对象”的东西。使用标准“xib”时,我们总是能够从 IB 对象库(右侧窗格)中拖放两种特殊类型的对象
“文件的所有者”是这个“外部对象”的一个例子。
我们能够将另一个 ExternalObject 拖放到我们的 xib 文件中,并通过使用此 UINib API 实例化此类 ViewController 将其连接到某个外部对象:
- (NSArray *)instantiateWithOwner:(id)ownerOrNil options:(NSDictionary *)optionsOrNil;
...是的,有可能,文档:
如果 nib 文件包含除文件之外的任何代理对象 Owner 代理对象,可以指定运行时替换对象 对于那些使用选项字典的代理。在那本词典里, 添加 UINibExternalObjects 键并将其值设置为字典 包含任何代理对象的名称(键)和真实的 使用的对象。代理对象的名称是字符串 您在 Interface Builder 检查器的 Name 字段中分配给它 窗口。
现在谈到情节提要 - 外部对象在对象检查器中不可用。这是有道理的,因为我还没有找到任何 API 可以让我们将外部对象注入到从情节提要创建的视图控制器中。我们只有这个:
- (id)instantiateInitialViewController;
- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier;
所以没有办法传递我们的“选项”。
不过……
外部对象在情节提要中不可用,直到...您制作了一个 Swift 项目(也许还有另一个因素在我的情节提要中启用外部对象,我不确定)。
因此,可以设置故事板允许我们将外部对象拖放到故事板中。但是我们怎样才能利用这一点呢?如何从情节提要中加载视图控制器并连接这些代理对象?
【问题讨论】:
标签: ios objective-c storyboard xib nsbundle