具有多个视图的 XIB 中的强 IBOutlet nil

Strong IBOutlet nil in XIB with multiple views

调用 Bundle.main.loadNibNamed 加载一个 .xib 文件,其中包含用多个 UIView 定义的一个 UI 的 (n) 个变体实例化我的子 [=27= 的 n 个实例].

然后我应用过滤器表达式来选择具有 .first(where: { [=12=].restorationIdentifier == <correct restoration ID> 的正确变体。

在这种情况下,我的过滤器表达式正确 returns 我的 .xib 中的第 5 个 UIView 但我的自定义 class 中的 @IBOutlet 连接到第一个UIView 已实例化但立即被我认为是 ARC 的内容弃用。

这导致我出乎意料地没有 IBOutlets。如何将 IBOutlet 连接到 Bundle.main.loadNibBaned

返回的正确(在本例中为第 5 个)UI视图

问题是 loadNibNamed 正在实例化您的所有视图,而您只选择保留其中的一些视图。在此过程中,IB 插座按某种顺序分配,这很可能不会以您想要的对象最后分配给插座而告终。

我认为 nib 文件不会为您提供仅实例化其多个顶级对象中的一部分的方法。您需要将各种视图拆分为多个 nib(并且只加载您需要的一个),或者切换到使用 Storyboard,确实 让您可以通过标识符实例化特定对象。