我创建了一个自定义UIView,我想将其用作TableView的Header Section View。 所以我手动创建了一个带有UIView组件的NIB。 然后我手动为我要与该类关联的类创建* .m和* .h, “AssignmentHeaderView.m”和“AssignmentHeaderView.h”,我将NIB的类设置为“AssignmentHeaderView”。 另外,我在AssignmentHeaderView.h中创建了一个“view”属性,如下所示:
@property (strong, nonatomic) IBOutlet UIView *view;
我在“视图”属性和Interface Builder中的“视图”之间建立了连接。
然后在我的TableViewController中,我将这个Nib注册为ViewDidLoad中的HeaderView:
[self.tableView registerNib:[UINib nibWithNibName:@"AssignmentHeaderView" bundle:nil] forHeaderFooterViewReuseIdentifier:@"AssignmentHeaderView"];
以便我以后可以在“viewForHeaderInSection”委托中将此标题视图出列如下:
AssignmentHeaderView *headerView = [self.tableView dequeueReusableHeaderFooterViewWithIdentifier:@"AssignmentHeaderView"];
但是我在此行上收到异常错误,并显示以下消息:
由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是键视图的键值编码兼容。'
所以错误是抱怨AssignmentHeaderView中没有“view”属性,当NIB被取消归档时,我认为这就是所说的。但我确实在AssignmentHeaderView.h中设置了“view”属性,所以我不明白为什么会出现这个错误。
非常感谢任何帮助。
-Malena
答案 0 :(得分:6)
一般知识,我发现了问题。 “dequeueReusableHeaderFooterViewWithIdentifier”tableView方法期望出列的实例是类类型:UITableViewHeaderFooterView。
由于我试图使用自定义UIView子类,编译器并不满意。我只能推测为什么而不是告诉我我出去的视图类应该是UITableViewHeaderFooterView类型,它给了我一个NIB加载错误。 但无论如何,有人为如何使用UITableViewHeaderFooterView创建Header Section自定义视图发布了一个很好的解决方案。
这是: http://iosdev12.blogspot.com/2013/07/how-to-set-custom-section-header-in.html
这对我有用