9

这是我所做的:

我创建了一个自定义xib文件,其中包含一个用于自定义表节标题的小 UIView。我对自定义xib文件进行了分类。

我想将此添加到 tableView 作为标题。我查看了一些资源,但它们似乎已经过时或缺少信息。

查看文档,我看到了添加自定义标头的参考,其中包含以下说明:

要使表格视图知道您的页眉或页脚视图,您需要注册它。您可以使用 UITableView 的 registerNib:forCellReuseIdentifier: 或 registerClass:forCellReuseIdentifier: 方法来执行此操作。

当我将 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;
}
4

2 回答 2

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;
}
于 2013-01-28T21:43:26.860 回答
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;
}
于 2015-04-15T12:37:09.893 回答