我可以在UITableView加载完成后调用函数吗?

时间:2016-02-19 19:00:13

标签: ios iphone swift uitableview ipad

我想根据它们包含的文字更改我桌子某些行的附件类型。我认为一种方法是在表格加载时,我可以遍历表格并检查每个单元格是否符合我的条件。我不知道如何在UITableView加载完成后调用函数。

5 个答案:

答案 0 :(得分:6)

尝试此委托方法,当调用此方法时,文本已在单元格中,您可以测试它并添加或删除附件。来自文档:

  

<强>讨论   表视图在使用单元格绘制行之前将此消息发送到其委托,从而允许委托在显示单元格对象之前对其进行自定义。此方法为委托提供了覆盖表视图前面设置的基于状态的属性的机会,例如选择和背景颜色。委托返回后,表视图仅设置alpha和frame属性,然后仅在行滑入或滑出时为其设置动画。

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

// check text and do something
}

答案 1 :(得分:1)

UITableView只加载在屏幕上可见的行,这是一个很棒的功能,因为它不需要一次生成所有行,这意味着更低的内存使用率和更好的性能。因此,没有UITableView完成加载的概念,因为它永远不会。想象一下,如果您有20行,屏幕上只显示8行,则用户可以向上或向下滚动,从而显示新行,旧行可以回收。正如其他人所说,这样做的地方是在cellForRowAtIndexPath上设置单元格。

答案 2 :(得分:0)

您必须在cellForRowAtIndexPath中进行检查,并在返回单元格之前更新相同功能中的附件视图。

因为tableView没有这样的事件已完成加载

答案 3 :(得分:0)

可能是,你可以像这样接近它,

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
}

但又取决于你拥有多少行数据......

答案 4 :(得分:0)

您可以异步调用该方法。

在你的

里面
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    if indexPath.row == data.count-1{
    // Declare your cells here
    }

}