当我的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
。
我错过了什么?
答案 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)
}
}