willDisplayCell委托方法Swift

时间:2015-08-31 08:24:42

标签: ios swift uitableview delegates

我一直在tableview工作,并且遇到了以下问题。

据我所知,willDisplayCell委托方法应该允许我访问当前的单元格设计。
我的问题是 - 我无法访问自定义单元格的实例,因为它是在cellForRowAtIndexPath方法中单独声明的。如果我再次声明它 - 我无法访问它的对象(我有一个uibutton)。或者我可能误解了这种方法的用法。

这是我的代码

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

//declaring the cell variable again

    var cell:TblCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! TblCell

    if let text = cell.lblCarName.text where !text.isEmpty {
        cell.act1.hidden = false
    } else {
        println("Failed")
    }
}

我在代码中看到的目标是访问TblCell uilabel并对其应用条件 - 如果其为零 - 则显示uibutton

注意:我的委托和数据源设置正确,方法正在运行,应用程序编译,但条件不能正常工作。

谢谢!

2 个答案:

答案 0 :(得分:6)

此委托为您提供现在将显示的单元格的实例,并且实际将该特定单元格作为cell参数发送。选择它并使用条件。

请尝试使用此代码。

var cell:TblCell = cell as! TblCell

if let text = cell.lblCarName.text where !text.isEmpty {
    cell.act1.hidden = false
} else {
    println("Failed")
}

答案 1 :(得分:2)

我认为更好的方法是:

guard let cell = cell as? TblCell else { return }

在willDisplayCell里面