这就是我所做的:
我创建了一个自定义xib
文件,该文件具有用于自定义表格节标题的小UIView。
我将自定义xib
文件归类。
我想将它添加到tableView作为标题。我查看了一些资源,但它们似乎已经过时或缺少信息。
在文档中,我看到了添加自定义标头的参考,其中包含以下说明:
要使表格视图能够识别页眉或页脚视图,您需要注册它。您可以使用registerNib:forCellReuseIdentifier:或registerClass:forCellReuseIdentifier:UITableView的方法。
当我将tableView添加到我的故事板视图时,很容易在XCode中为其分配重用标识符。我甚至能够创建一个自定义单元xib
文件,它还有一个在XCode中重用标识符的位置。
当我为节标题创建自定义UIView时,它没有重用标识符的条目。没有这个,我不知道如何使用registerNib:forCellReuseIdentifier
。
更多信息:
我有一个内部有tableView
的故事板场景。 tableView
是一个链接的自定义类,tableView
对象在父视图的ViewController
文件中有一个插座。
父ViewController
是UITableViewDataSourceDelegate
和UITableViewDelegate
。再一次,我能够毫无问题地实现自定义单元格。除了标题之外,我甚至无法以任何方式修改标题。
我尝试从自定义[[self tableHeaderView] setBackgroundColor:[UIColor clearColor]];
类调用方法tableView
,但没有任何反应。我尝试使用插座名称在父ViewController
类中使用此方法,如下所示:
[[self.tableOutlet tableHeaderView] setBackgroundColor:[UIColor clearColor]];
非常感谢任何帮助。
编辑:(无法将背景更改为透明)
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
HeaderView *headerView = [self.TableView dequeueReusableHeaderFooterViewWithIdentifier:@"tableHeader"];
// Set Background color
[[headerView contentView] setBackgroundColor:[UIColor clearColor]];
// Set Text
headerView.headerLabel.text = [self.sectionArray objectAtIndex:section];
return headerView;
}
答案 0 :(得分:20)
您不需要在xib中设置标识符 - 您只需在注册时使用相同的标识符,并在标题视图出列时使用。在viewDidLoad方法中,我注册了这样的视图:
[self.tableView registerNib:[UINib nibWithNibName:@"Header1" bundle:nil] forHeaderFooterViewReuseIdentifier:@"header1"];
然后,在委托方法中:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *headerView = [self.tableView dequeueReusableHeaderFooterViewWithIdentifier:@"header1"];
return headerView;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 100;
}
答案 1 :(得分:0)
关于背景颜色的问题(除非你想透明):
您可以创建占据整个视图的UIView
,然后更改其背景颜色。
如果您不希望其他人知道发生了什么,您可以覆盖backgroundColor属性:
//interface
@property (copy, nonatomic) UIColor *backgroundColor;
//implementation
@dynamic backgroundColor;
- (void)setBackgroundColor:(UIColor *)backgroundColor {
//self.viewBackground is the created view
[self.viewBackground setBackgroundColor:backgroundColor];
}
- (UIColor *)backgroundColor {
return self.viewBackground.backgroundColor;
}