TableCell进入swift中的表视图

时间:2018-03-29 02:40:13

标签: ios swift uitableview

基本上我需要做这里所做的事情 - Not able to add static UITableViewCell into tableview

但是我需要在swift中完成它并且我不知道如何将目标C解决方案转换为swift

Image of the solution I need in swift

3 个答案:

答案 0 :(得分:0)

尝试:

let nibName = "nameOfYourCellNib"
let cell = Bundle.main.loadNibNamed(nibName, owner: nil, options: nil)?.first as? {YOUR_CELL_CLASS_HERE}

答案 1 :(得分:0)

我可以知道您是在尝试创建静态单元格还是动态单元格? 解决方案可以简单地更改表格视图中的单元格,而不是将其添加到代码或单独的xib

答案 2 :(得分:0)

首先,这不是要求代码示例的地方。您应该查看Codementor等解决方案,在那里您可以找到所需的帮助;)

它们是解决问题的不同方法。

首先,您使用的是xib,因此无法在其中添加单元格。 相反,你可以使用故事板。在这种情况下,您将能够做任何您想做的事情并添加自定义单元格。

1 - 如果你真的必须使用xib,那么你可以使用alanlo方法加载自定义单元格。我建议使用扩展名注册您的自定义单元格,如下所示:

extension UITableViewCell {

    class func register(tableView: UITableView) {

        let identifier = String(describing: self)
        let nib = UINib(nibName: identifier, bundle: nil)

        tableView.register(nib, forCellReuseIdentifier: identifier)
    }
}

请注意,您的单元格标识符需要与自定义tableviewcell类相同(此处为YourCustomCellTableViewCell)

2-然后在viewdidload

YourCustomCellTableViewCell.register(tableView: yourTableView)

3 - 然后由于延迟延伸,您可以轻松地将您的细胞出列:

extension UITableView {

    func dequeue<T: UITableViewCell>(indexPath: IndexPath) -> T {

        let identifier = String(describing: T.self)

        guard let cell = dequeueReusableCell(withIdentifier: identifier, for: indexPath) as? T else {
            fatalError()
        }

        return cell
    }
}

4 - 在cellForRowAt使用:

将其出列
let cell: YourCustomTableViewCell = yourTableView.dequeue(indexPath: indexPath)
return cell