在具有静态单元格的故事板中的UITableView中具有带XIB的自定义单元格时,出口是零

时间:2017-08-16 10:27:26

标签: ios swift uitableview storyboard xib

我想在故事板中的UITableView中使用静态单元格。 但我也希望从具有自定义.xib子类的自定义UITableViewCell文件加载这些单元格。

我想这样做,因为我想在多个表视图中重用单元格。

所以我在storyboard中添加了一些静态单元格,并在身份检查器中设置了自定义类。

但是当我想在自定义视图的awakeFromNib方法中访问Outlets时,它们是nil。即使是后来,他们也没有被实例化。

我怎样才能以正确的方式做到这一点?

2 个答案:

答案 0 :(得分:0)

如果要在故事板中添加静态单元格,它们的功能类似于单独的.xib文件,覆盖您愿意使用的自定义.xib

如果要在多个表视图中重用单元格,则应在表视图中使用动态单元格。动态细胞通常也更具可持续性,特别是在更大的应用中。

答案 1 :(得分:0)

好的,我明白了,这是怎么回事:

我为我的UITableViewCell创建了一个容器类,如下面的答案中所述: https://stackoverflow.com/a/34881072/4846592

此类包含一个属性,用于访问自定义单元格并在其初始值设定项中加载XIB

这里是Swift 3的代码

class CustomTableViewCellContainer: UIView {    
var cell: CustomTableViewCell!

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        cell = Bundle.main.loadNibNamed("CustomTableViewCell", owner: self, options: nil)!.first as! TextFieldTableViewCell
        cell.frame = self.bounds
        cell.autoresizingMask = [.flexibleWidth]
        self.addSubview(cell)
    }
}

然后,我刚在Storyboard中的静态UIView的ContentView中添加了UITableViewCell,并将高度和CustomTableViewCellContainer设置为自定义类名。 最后,我添加了一个IBOutlet来访问自定义单元格。