如何覆盖 reloadRowsAtIndexPath?

Posted

技术标签:

【中文标题】如何覆盖 reloadRowsAtIndexPath?【英文标题】:How to override reloadRowsAtIndexPath? 【发布时间】:2016-06-17 16:33:02 【问题描述】:

我正在尝试为 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】:

reloadRowsAtIndexPaths 并不是为此而生的。您可能想改用 tableView(_:willDisplayCell:forRowAtIndexPath:)。例如:

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

【讨论】:

好的,我现在就试试,但是我们如何在特定的行上调用这个方法呢? 只需将它添加到您的表格视图委托中,当显示单元格时它会自动调用。 这里,当有插入时,我想检查以前插入的单元格,然后显示它的图像。你认为它会起作用吗? @Bram'in 只有一种方法可以找出答案!试试看:) 我正在尝试,但 void 函数中的返回存在错误:( 如果我有返回类型,则表示该函数不符合协议 :(

以上是关于如何覆盖 reloadRowsAtIndexPath?的主要内容,如果未能解决你的问题,请参考以下文章

请教如何使用dve查看覆盖率

如何:获取代码覆盖率数据

你好,LABVIEW复制文件,如何做到不覆盖?

如何自动给文件命名,避免覆盖同名文件?

安卓软件升级软件如何覆盖旧版

如何在代码覆盖率报告 Laravel 8 中覆盖异常?