如何实现自定义单元格

时间:2015-10-07 18:36:22

标签: ios objective-c uitableview custom-cell

我正在尝试将tableview中的单元格从generic更改为custom并创建了一个新的tableview单元类。但是,我无法让单元格识别新的自定义单元格。相反,它仍然显示通用单元格,尽管我已将故事板中的设置更改为标识检查器中的自定义,并且还将tableview单元格的类更改为新的自定义单元格。我还将故事板中单元格中的元素连接到新的自定义类。

我的理解是tableview VC知道从tableView cellForRowAtIndexPath方法使用哪个类,我也用下面的代码改变了它。该项目编译但继续显示旧的通用单元格。任何人都可以看到错误或建议还有什么可做吗?

#import "customCell.h"

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  customCell *cell = (customCell *)[self.tableView dequeueReusableCellWithIdentifier:@"Cell"];
    Items *item = [self.fetchedResultsController objectAtIndexPath:indexPath];

    return cell;
}

提前感谢任何建议。

修改:

通过拖动uielements在桌面视图顶部的故事板中创建自定义单元格。也许这是个问题:

enter image description here

单元格样式设置为自定义:

enter image description here

5 个答案:

答案 0 :(得分:2)

您需要创建新的UITableViewCell并启用“创建XIB文件...”。 在XIB中创建自定义单元格,并将其自定义类作为您刚刚创建的类。

然后在tableView cellForRowAtIndexPath注册Nib :(它很快但我打赌你可以找出目标c并行...)

tableView.registerNib(UINib(nibName: "YourUITableViewCellClass", bundle: nil), forCellReuseIdentifier: "YourCustomIdentifierFromTheCustomClass")

然后访问您的手机:

var cell = tableView.dequeueReusableCellWithIdentifier("YourCustomIdentifierFromTheCustomClass")

就是这样。

答案 1 :(得分:0)

选择故事板上的单元格,然后在此字段中输入您的班级名称。

当您从标识符中将其出列时,它将成为该类的实例。

enter image description here

答案 2 :(得分:0)

创建自定义单元格时,您必须执行以下操作:

  1.   

    在故事板上设置标签,图像等。

  2.   

    创建自定义单元格类(继承自   UITableViewCell)(CustomCell.h& .m),CustomCell.h拥有全部   作为标签,图像等的iboutlet的属性并将它们全部合成   在实施中。

  3.   

    创建此自定义类后,请返回故事板,选择   自定义单元格,将其类更改为CustomCell并给它一些   标识符如“MyCustomCell”,然后右键单击自定义单元格   并将IBOutlets与标签等连接起来。

  4.   

    现在,在要实现的类中导入CustomCell类   UITableView并使用您在CustomCell中定义的属性   类。

  5. location /static  {
        alias /path/to/static/assets;
    }
    

答案 3 :(得分:0)

您可以通过拖动单元格视图在主故事板中创建自定义单元格。

为该原型创建自定义类。

在标识符检查器中提及类名。

将该类导入视图控制器.h文件。

并将您的自定义从主要故事板连接到自定义class.h文件。

它有效!。

答案 4 :(得分:0)

请注意,每个普通的 tableViewCell 都有一个内置和隐藏的 UIImageView。

在 Objective-C 中,您只需在 cellForRowAtIndexPath 中执行此操作,

cell.imageView.image = [UIImage imageNamed:@"My awesome image"];

在 Swift 中,它非常接近。

cell.imageView?.image = UIImage(named: "My awesome image")