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 加载完成后可以调用函数吗?的主要内容,如果未能解决你的问题,请参考以下文章

重新加载uitableview后滚动表格视图

加载特定元素后可以调用函数吗? [复制]

进行第二次 Json 调用 Swift 3 后如何在 UITableview 中重新加载数据

UITableView 的数据啥时候加载?啥时间 tableview 调用它的委托方法。 viewWill 之后会出现吗?

Vue Router - 路由加载后调用函数

iOS - 在 AFNetworking 异步图像下载线程完成后重新加载 UITableView