如何覆盖reloadRowsAtIndexPath?

时间:2016-06-17 16:33:03

标签: ios xcode swift uitableview

我试图覆盖tableView单元格的方法reloadRowAtIndexPath

我想要覆盖cellForRowAtIndexPath

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        if(isUserTalking(indexPath))
        {
            return userMessageCell(indexPath)
        }
        else
        {
            if(isNotUserFirstMessage(indexPath))
            {
                return notUserFirstMessageCell(indexPath)
            }
            else
            {
                return notUserNotFirstMessageCell(indexPath)
            }
        }

    }

以这种方式:

func tableView(tableView: UITableView, reloadRowsAtIndexPaths indexPath: NSIndexPath) -> UITableViewCell
    {
        print("job")
            if(isNotUserFirstMessage(indexPath))
            {
                return notUserFirstMessageCell(indexPath, showImage: false)
            }
            else
            {
                return notUserNotFirstMessageCell(indexPath, showImage: false)
            }
    }

但是当我使用self.myTable.reloadRowsAtIndexPath时,它永远不会调用覆盖版本。

你知道怎么解决吗?

1 个答案:

答案 0 :(得分:0)

reloadRowsAtIndexPaths并非真正意义上的。您可能希望使用 tableView(_:willDisplayCell:forRowAtIndexPath:)代替。 E.g:

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    print("job")
    if isNotUserFirstMessage(indexPath) {
        configureNotUserFirstMessageCell(cell, showImage: false)
    } else {
        configureNotUserNotFirstMessageCell(cell, showImage: false)
    }
}