UITableView 加载完成后可以调用函数吗?
Posted
技术标签:
【中文标题】UITableView 加载完成后可以调用函数吗?【英文标题】:Can I call a function when UITableView has finished loading? 【发布时间】:2016-02-19 19:00:12 【问题描述】:我想根据它们包含的文本更改表格中某些行的附件类型。我认为一种方法是在表格加载后,我可以遍历表格并检查每个单元格是否满足我的条件。 UITableView 加载完成后,我不知道如何调用函数。
【问题讨论】:
【参考方案1】:试试这个委托方法,当它被调用时,文本已经在单元格中,你可以测试它并添加或删除附件。来自文档:
讨论 表格视图在使用单元格绘制一行之前将此消息发送给其委托人,从而允许委托人在单元格对象显示之前对其进行自定义。此方法使委托有机会覆盖先前由表视图设置的基于状态的属性,例如选择和背景颜色。代理返回后,表格视图仅设置 alpha 和 frame 属性,然后仅在为滑入或滑出的行设置动画时。
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
// check text and do something
【讨论】:
非常感谢!像魅力一样工作!【参考方案2】:UITableView 只加载屏幕上可见的行,这是一个很棒的功能,因为它不需要一次生成所有行,这意味着更少的内存使用和更好的性能。因此,没有 UITableView 完成加载的概念,因为它永远不会完成。想象一下,如果您有 20 行,而屏幕上只显示 8 行,用户可以向上或向下滚动,从而显示新行并回收旧行。所以正如其他人所说,这样做的地方是在 cellForRowAtIndexPath 设置单元格时。
【讨论】:
【参考方案3】:您必须在返回单元格之前检查 cellForRowAtIndexPath 并在同一函数中更新附件视图。
由于tableView没有这样的事件加载完成
【讨论】:
【参考方案4】:您可以异步调用该方法。
在你的
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
if indexPath.row == data.count-1
// Declare your cells here
【讨论】:
【参考方案5】:可能,你可以这样处理,
func tableView(_tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
///Cell Creation Code
if indexPath.row == data.count
//call method asynchronously to indicate table finished loading
//return cell
但这又取决于您有多少行作为数据...
【讨论】:
以上是关于UITableView 加载完成后可以调用函数吗?的主要内容,如果未能解决你的问题,请参考以下文章
进行第二次 Json 调用 Swift 3 后如何在 UITableview 中重新加载数据
UITableView 的数据啥时候加载?啥时间 tableview 调用它的委托方法。 viewWill 之后会出现吗?