调用Bundle.main.loadNibNamed
加载一个.xib文件,该文件包含(n(由多个UIView
定义的一个UI的多个变体,实例化了我的子类的n个实例。
然后,我应用一个过滤表达式来选择.first(where: { $0.restorationIdentifier == <correct restoration ID>
的正确变体。
在这个例子中,我的filter表达式正确地返回了我的.xib中的第五个UIView
,但我的自定义类中的@IBOutlet
s连接到了实例化的第一个UIView
,但我认为它立即被ARC否决了。
这导致我意外地没有IBOutlet
s。如何将IBOutlet
s连接到Bundle.main.loadNibBaned
返回的正确(本例中为第5个(UIView
问题是loadNibNamed
正在实例化您的所有视图,而您只是选择保留其中的一些视图。在这个过程中,IB出口是按照某种顺序分配的,这很可能不会导致你想要的对象最后被分配到一个出口。
我不认为一个nib文件能让你只实例化它的多个顶级对象中的一些。您需要将各种视图拆分为多个笔尖(并且只加载您需要的一个(,或者切换到使用Storyboard,允许您通过其标识符实例化特定对象。