我正在打开一个新问题来跟进我的最后一个问题(添加子视图后 superview 和 parentviewcontroller nil)。基本上我知道使用子视图是一个好主意,但是我不应该有一个 ViewController 来控制一个存在于另一个 ViewController 中的子视图。基本上我想做以下事情......我有两个 ViewControllers 共享一个公共子视图。我已经将该子视图创建为一个名为 SearchDate.xib 的 nib。文件所有者是相应的类 SearchDateView.m/h。该类在笔尖中的 UIView 内有一个唯一元素的出口,它是一个标签。SearchDateView 类还具有更改 SearchDateView.xib 中标签值的功能。我希望我的两个 ViewController 都加载这个笔尖,但显然我不知道如何正确加载笔尖。无论我做什么,充其量都没有显示,最坏的情况是抛出异常。苹果文档谈到将 IB 中的其他类实例直接拖入您的主视图,但这似乎没有奏效。我的 ViewController 中有一个 SearchDateView 插座,我尝试在控制器的加载视图上执行此操作:
searchDateView = [[[NSBundle mainBundle] loadNibNamed:@"SearchDateView" owner:self options:nil] objectAtIndex:0];
[[self view] addSubview:searchDateView];
但我得到了这个例外:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MainViewController 0x431fac0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key searchDateLabel.'
我知道我在做一些完全错误的事情,但是拥有一个 nib、关联视图类来更新该 nib 中的一些对象并在不同的控制器中重用该 nib 的正确方法是什么?
编辑:鉴于评论可能还不够清楚。我不想对整个视图使用相同的 nib 文件 - 而不是子视图。因此,例如控制器 A 有一个地图和一个 SearchDateView,控制器 B 有一个表视图和一个 SearchDateView。所以我想知道如何将子视图加载到多个控制器中......