如何对两个不同的表视图使用相同的表视图单元格?

时间:2019-02-20 06:29:06

标签: ios swift uitableview refactoring

我在标签栏控制器中显示了两个表格视图。一个显示按受欢迎程度过滤的内容,另一个显示按时间(最新)过滤的内容。两者具有相同的单元格布局,当前正在复制代码。如何使该单元格对于UITableViewController来说是共同的?我的普通班是ContentViewCell,但是我不确定如何将IBOutlets连接到情节提要中的两个班。

class ContentViewCell: UITableViewCell {
    @IBOutlet weak var title: UILabel!
    @IBOutlet weak var body: UILabel!
    @IBOutlet weak var author: UILabel!
    @IBOutlet weak var tag: UILabel!
    // ..
}

目前我有LatestTableViewController

class LatestViewCell: UITableViewCell {
    @IBOutlet weak var latestTitle: UILabel!
    @IBOutlet weak var latestBody: UILabel!
    @IBOutlet weak var latestAuthor: UILabel!
    @IBOutlet weak var latestTag: UILabel!
    // ..
}

3 个答案:

答案 0 :(得分:1)

将XIB用于tableView Cell,并在项目中的任何地方重复使用。

http://ios-tutorial.com/custom-uitableviewcell-xib-swift-3/

答案 1 :(得分:1)

是的,如果ContentViewCell两者完全相同,则可以将UITableViewController分配给多个IBOutlet

您需要做的就是为两个单元格分配相同的类,并将IBOutlet重新连接到新分配的单元格。而且对两者都适用。

请记住,如果您忘记连接任何IBOutlet,而您正在使用它,它将崩溃。所以要小心。

答案 2 :(得分:0)

您可以在不同的UIViewController中使用相同的UITableViewCell。您需要在UITableView的cellForRowAt indexPath数据源方法中使用以下方法。

func dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath) -> UITableViewCell

示例:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ContentViewCell",for: indexPath) as! ContentViewCell
        //Set you cell here

    return cell
    }