0

UIView使用 xib 文件创建了一个自定义 A,它可以通过以下方式正确加载:


    NSArray *starsNib = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:nil options:nil];
    A *starsView = starsNib[0];
    [self.view addSubview:starsView];

然后在我的故事板文件中,我将此自定义视图 A 添加到UITableViewCell. contentView加载 tableview 时,我发现自定义视图 A 没有添加到 xib 文件中的子视图。我还发现当 AinitWithCoder:返回时,它没有子视图。
顺便说一句,在 xib 文件中,我已将parent view和设置file's owner为自定义视图 A 类。
我想知道为什么会发生这种情况以及为什么initWithCoder:返回时没有加载子视图?

4

2 回答 2

0

因为视图是从情节提要加载的,而不是从 XIB 加载的。在情节提要中,视图是空的。

您应该从情节提要中删除视图并将其加载到代码中,可能是在实例化单元格时,因为每个单元格只需要执行一次。

于 2015-04-22T06:41:39.823 回答
0

您可以使用 Xib 创建自定义 tableViewCell,它的文件所有者是您的自定义 UITableViewCell 类,然后您可以使用cellForRowAtIndexPath:类似的方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (cell == nil) {
        // Load the top-level objects from the custom cell XIB.
        NSArray * starsNib = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:self options:nil];
        cell = starsNib[0];
    }
    return cell;
}
于 2015-04-22T06:54:39.050 回答