故事板中的外部对象

时间:2015-01-22 20:50:29

标签: ios objective-c storyboard xib nsbundle

有一段时间,Apple为我们提供了故事板,我跟踪了它的故事情节。从一开始就进化,它有一些优点和缺点,但肯定这是一个未来"如果你将它与oldschool" xib"进行比较文件...

我在这里所知道的是一种名为"外部对象"。使用标准" xibs"我们总是能够从IB对象库(右侧窗格)拖放两种特殊类型的对象

"文件所有者"是这个"外部对象"。

的一个例子

我们能够通过使用此UINib API实例化此类ViewController,将一个或多个ExternalObject拖放到我们的xib文件并将其连接到某个外部对象:

- (NSArray *)instantiateWithOwner:(id)ownerOrNil options:(NSDictionary *)optionsOrNil;

...是的,有可能,文件:

  

如果nib文件包含除File之外的任何代理对象   所有者代理对象,可以指定运行时替换对象   对于那些使用选项字典的代理。在那本字典里   添加UINibExternalObjects键并将其值设置为字典   包含任何代理对象(密钥)和真实的名称   在他们的位置使用的对象。代理对象的名称是字符串   您在Interface Builder检查器的“名称”字段中为其分配   窗口。

现在谈到故事板 - 对象检查器中没有外部对象。这是有道理的,因为我还没有找到允许我们将外部对象注入从故事板创建的视图控制器中的API。我们只有这个:

- (id)instantiateInitialViewController;

- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier;

所以没有办法通过我们的"选项"。

...然而

在故事板中没有外部对象,直到...你制作一个Swift项目(也许还有另一个因素可以在我的故事板中启用外部对象,我不确定)。

因此,可以设置故事板允许我们拖动和放置的设置。将外部对象放入故事板。但是我们怎么能利用这个呢?如何从故事板加载视图控制器并连接这些代理对象?

1 个答案:

答案 0 :(得分:2)

您可以在视图控制器场景上拖放NSObject,并在检查器中为其指定正确的类。

enter image description here

它可以按预期连接

enter image description here

我为this question/answerpublished it at GitHub创建了一个示例项目。