2

UITableView が空のときに画像を表示しようとしていますが、何らかの理由で tableView が空のときにコードが実行されませんが、セルがある場合は問題ありません。

// 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

私は何が欠けていますか?

4

3 に答える 3

1

データソースにオブジェクトがない場合、上記の関数は呼び出されません。したがって、それを行う別の場所を見つける必要があります。データソースが静的 (削除または追加操作なし) の場合は、データソースが で空かどうかを確認することをお勧めしますviewDidLoad。データソースを変更できる場合は、データソースからオブジェクトを削除する関数で変更することをお勧めします。オブジェクトを削除するたびにデータソースをチェックし、空になったら画像を表示します。

于 2015-07-02T23:56:10.507 に答える
0

numberOfRowsInSectionデリゲートで、0 (データなし) に等しいかどうかを確認しself.objects?.count 、1 を返します。それ以外の場合は、テーブルの行数としてカウントを返します。これにより、cellForRowAtIndexPathデータがない場合でもデリゲートを起動できるため、画像を表示できます。

于 2015-07-03T00:00:21.830 に答える
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)
    }


}
于 2015-07-03T01:01:37.417 に答える