UITableView为空时显示图像

时间:2015-07-02 23:48:01

标签: ios swift uitableview pfobject pftableviewcell

当我的UITableView为空时,我试图显示图像,但由于某种原因,当tableView为空时代码不会运行,但是当有单元格时,它会很好:<\ n / p>

// Configures cell
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> (PFTableViewCell!) {
    let cell = tableView.dequeueReusableCellWithIdentifier("upcomingCell", forIndexPath: indexPath) as! UpcomingTVCell
    cell.configureCell(object)

    //makes it so the separators won't dissapear on us
    self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
    self.tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine

    if (self.objects?.count == nil) {
        println("test")
        UIGraphicsBeginImageContext(self.view.frame.size);
        UIImage(named: "homeZero")?.drawInRect(self.view.bounds)
        var backImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext();
        self.tableView.backgroundColor = UIColor(patternImage: backImage)

        } else {
        self.tableView.backgroundColor = UIColor.whiteColor()
        println("this other code ran")

    }

    return cell
}

我已尝试self.objects?.count == 0,我已尝试使用numberOfRowsInSection,并且我已尝试visibleCells

我错过了什么?

3 个答案:

答案 0 :(得分:1)

如果数据源中没有对象,则不会调用上面的函数。因此,你需要找到另一个地方去做。如果您的数据源是静态的(没有删除或添加操作),我建议在viewDidLoad中检查数据源是否为空。如果可以更改数据源,那么我建议在从数据源中删除对象的函数中执行此操作。每次删除对象时,都要检查数据源,如果它变为空,则显示图像。

答案 1 :(得分:0)

numberOfRowsInSection委托检查self.objects?.count中,如果它等于0(无数据),则返回1否则将计数作为表中的行数返回。这将允许cellForRowAtIndexPath代表触发,即使没有数据也可以显示您的图像。

答案 2 :(得分:0)

我稍微修改了子类UITableView。如果某个部分不包含单元格,则表格会显示placeholder视图。

class PlaceholderTableView: UITableView {
    @IBOutlet var placeholder: UIView?
    @IBInspectable var emptiableSection:Int = 0


    override func reloadData() {
        super.reloadData()
        let count = self.numberOfRowsInSection(emptiableSection)
        self.placeholder?.hidden =  (count != 0)
    }


}