如何在 UIView TableView 上添加 UITableViewCell

Posted

技术标签:

【中文标题】如何在 UIView TableView 上添加 UITableViewCell【英文标题】:How to add UITableViewCell on UIView TableView 【发布时间】:2017-04-06 14:07:37 【问题描述】:

我有 UIView 类添加了UITableView 现在我创建了UITableViewCell 想在UITableViewCell 上添加自定义单元格。

- (id)initWithCoder:(NSCoder *)coder

    self = [super initWithCoder:coder];
    if (self) 
            //do somthing
        filterColorTableView.delegate = self;
        filterColorTableView.dataSource = self;

        [self.filterColorTableView registerNib:[UINib nibWithNibName:@"FilterColor" bundle:nil] forCellReuseIdentifier:@"COLORCELL"];

        colorNameList = [[ColorModelClass colorListNames]allKeys];
        filterColorTableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

    

    return self;


- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
    
    static NSString *tableViewCellIdentifier = @"COLORCELL";
    FilterColorTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableViewCellIdentifier forIndexPath:indexPath];
    [cell.lbl_ColorName setText:@"Welcome"] ;
    cell.lbl_ColorName.textColor = [UIColor redColor];
    [cell.colorImage setImage:[UIImage imageNamed:@"circle.png"]];
    return cell;



Crash Report Message:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier COLORCELL - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

创建单元格对象但关联的 lbl_ColorName 和 colorImage 总是 nil 的

注意:我不使用 UIViewController 仅使用 UIView 类。

在 UIView Xib 上添加了 UITableView 并在同一文件的所有者中采用了另一个自定义 UITableViewCell。

【问题讨论】:

你用tableview注册了cell吗?为了出队? @HarmVanRisk 是的,我做到了。 在 xib 文件中突出显示单元格时,是否将标识符添加到属性检查器? @HarmVanRisk 检查附件。 【参考方案1】:

第一个 register the custom cell class 在 vi​​ewDidLoad 时或之后的任何时间。完成此操作后,与类或 nib 注册一起引入的 the dequeue method 是 dequeueReusableCellWithIdentifier:forIndexPath:。注意新的 indexPath 参数。

它总是返回一个初始化的单元格,所以 nil 检查是多余的......

FilterColorTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:filterTableViewCell forIndexPath:indexPath];
// deleted if(cell == nil)...

【讨论】:

我尝试注册并更新它现在崩溃的 'NSInternalInconsistencyException',原因:'无法使具有标识符 COLORCELL 的单元格出列 - 必须为标识符注册一个 nib 或一个类或连接一个原型单元格标识符中的故事板'我添加了“COLORCELL”,我更详细地更新了问题。 嗯。我没有意识到这是在 initWithCoder 的上下文中。这听起来像在 init 中完成的工作还为时过早。你能把表格设置的东西移到didLayoutSubviews

以上是关于如何在 UIView TableView 上添加 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

在UIView上添加tableView设置代理属性

在tableView上面加个UIView的问题

在我的 UITableView 上添加一个 UIView

如何使用 Swift 通过代码库增加和减少 UIView 高度

给 UIView 添加阴影

在 UIView 上调用 endEditing