【问题标题】:Tableview, how to disable reusablecell? (for testing purposes)Tableview,如何禁用可重用单元? (用于测试目的)
【发布时间】:2021-01-10 12:22:34
【问题描述】:

我目前正在使用带有可重用单元的 tableview,但我想禁用它(我知道人们不推荐这个,但我想看看性能差异)。我已尝试搜索正确的代码,但这些示例对我不起作用。

如果有人能指出我正确的方向,将不胜感激。

基本上我不希望单元格可重复使用,我希望将图像/名称存储在内存中。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let cell = Tableview.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SökrutaCell


        cell.Söknamn.text = sökresultat[indexPath.row].displayname
        cell.Sökbild.image = UIImage(systemName: "eye.slash")


    return cell
    }

【问题讨论】:

    标签: ios swift uitableview alamofire


    【解决方案1】:

    如果您想存储图像和名称 - 您必须构建单独的缓存逻辑来为您执行此操作。 禁用出队绝对不是要走的路。

    您将缓存保存在外部某个单独的结构中,然后从func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 中的那个地方提取数据。

    如果您真的非常想这样做 - 只需获取 UITableViewCells 的数组,而不是 dequeueReusableCell,只需手动初始化 Cells - 然后将其保存在数组中。

    但是由于许多不同的原因,这是非常错误的......不要这样做 - 正确地做并在视图逻辑之外构建缓存逻辑。

    【讨论】:

    • 感谢您的回答!上面的代码是否有任何部分可以更改以使其不可重用?我想也许我可以将“dequeueReusableCell”更改为其他内容,或者它可能比这更复杂?抱歉,我是 Swift 的初学者。
    【解决方案2】:

    要禁用单元格重用,您可以替换此行

    let cell = Tableview.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SökrutaCell
    

    有了这个

    let cell = SökrutaCell()
    

    这将为每次请求单元格时分配一个新的单元格对象。

    【讨论】:

    • 嘿!我尝试更改代码,但在“cell.Söknamn.text = sökresultat[indexPath.row].displayname”处出现致命错误 - 在 unrwapping 可选值时意外发现 nil。我必须用某些东西替换“indexpath”吗?
    • 此错误似乎与原始问题或我的答案无关。通常,此错误意味着您使用的是“!”运算符,你不应该这样做。
    • 感谢您的反馈。在错误代码之前不久,我收到此代码“信息:Ferch-response 无法打开文件 /private/var/mobile..../caches, errno:2,打开缓存文件是否有问题?
    • 对不起,这可能意味着什么。我不知道:(
    猜你喜欢
    • 1970-01-01
    • 2016-11-22
    • 2015-10-16
    • 2016-05-04
    • 2020-12-18
    • 1970-01-01
    • 2015-11-15
    • 2017-01-30
    • 2018-12-07
    相关资源
    最近更新 更多