具有多个视图的 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 的内容弃用。
这导致我出乎意料地没有 IBOutlet
s。如何将 IBOutlet
连接到 Bundle.main.loadNibBaned
返回的正确(在本例中为第 5 个)UI视图
问题是 loadNibNamed
正在实例化您的所有视图,而您只选择保留其中的一些视图。在此过程中,IB 插座按某种顺序分配,这很可能不会以您想要的对象最后分配给插座而告终。
我认为 nib 文件不会为您提供仅实例化其多个顶级对象中的一部分的方法。您需要将各种视图拆分为多个 nib(并且只加载您需要的一个),或者切换到使用 Storyboard,确实 让您可以通过标识符实例化特定对象。
调用 Bundle.main.loadNibNamed
加载一个 .xib 文件,其中包含用多个 UIView
定义的一个 UI 的 (n) 个变体实例化我的子 [=27= 的 n 个实例].
然后我应用过滤器表达式来选择具有 .first(where: { [=12=].restorationIdentifier == <correct restoration ID>
的正确变体。
在这种情况下,我的过滤器表达式正确 returns 我的 .xib 中的第 5 个 UIView
但我的自定义 class 中的 @IBOutlet
连接到第一个UIView
已实例化但立即被我认为是 ARC 的内容弃用。
这导致我出乎意料地没有 IBOutlet
s。如何将 IBOutlet
连接到 Bundle.main.loadNibBaned
问题是 loadNibNamed
正在实例化您的所有视图,而您只选择保留其中的一些视图。在此过程中,IB 插座按某种顺序分配,这很可能不会以您想要的对象最后分配给插座而告终。
我认为 nib 文件不会为您提供仅实例化其多个顶级对象中的一部分的方法。您需要将各种视图拆分为多个 nib(并且只加载您需要的一个),或者切换到使用 Storyboard,确实 让您可以通过标识符实例化特定对象。