【问题标题】:What is -[UITableViewDelegate willDisplayCell:forRowAtIndexPath:] for?-[UITableViewDelegate willDisplayCell:forRowAtIndexPath:] 是什么?
【发布时间】:2009-12-11 19:15:19
【问题描述】:

在我的所有UITableView 编程中,我总是将我的UITableViewCells 配置为-[UITableViewDataSource tableView:cellForRowAtIndexPath:]。现在我遇到了 -[UITableViewDelegate willDisplayCell:forRowAtIndexPath:] 方法。这似乎也是进行单元配置的合适位置。

我的问题是:这两种方法之间适当的“分工”是什么?我应该在一个与另一个中做什么?

【问题讨论】:

    标签: iphone uitableview


    【解决方案1】:

    您可以使用它来配置字体和文本颜色等内容。在较新版本的 iPhone 中,使用某些表格配置,如果您在 tableView:cellForRowAtIndexPath: 方法中配置标签文本颜色等内容,您的更改将在单元格实际显示之前的某个时间丢失。在这里您可以执行更改标签颜色、调整背景突出显示等操作。

    【讨论】:

    • 谢谢。为什么对 tableView:cellForRowAtIndexPath: 中的单元格所做的更改可能会“丢失”,是否有理由?我想知道丢失的东西和不会丢失的东西之间的界限在哪里。
    • 我不知道。我什至不知道这存在,直到我们为 3.0 SDK 构建时突然一堆标签更改停止工作(即使那样,仅在非常特定的表配置中)。当我们对此进行错误处理时,我们得到了“按预期工作:为此使用 willDisplayCell:forRowAtIndexPath:。没有提供其他解释;)
    • 其实想多了,你应该在这里做显示相关的事情,而另一个做内容相关/单元格初始化的事情。
    • 除非在 willDisplayCell:forRowAtIndexPath: 中完成,否则肯定会失败的一件事是 textLabel 或 detailTextLabel 上的 backgroundColor 属性。如果您在 cellForRowAtIndexPath: 方法中设置这些属性,则该属性将在实际显示之前重置为 tableView 的背景颜色(但即便如此,仅在标准表格视图中)。
    • 我在将 NSAttributedString 应用于单元格中的属性 UILabel 时遇到问题。我在cellForRowAtIndexPath 中设置了标签的属性文本,并且在绘制单元格之前属性会以某种方式丢失。当我将此任务转移到willDisplayCell 时,它终于奏效了。许多小时试图弄清楚我做错了什么。我希望在文档中更好地解释或警告这种行为。
    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多