2016-06-28 62 views
0

我想顯示的消息時,我的表是空的顯示的消息。我創建一個UILabel並將其設置爲我的tableView的backgroundView,但是我想偏移tableView邊框的文本。我嘗試通過在創建標籤時減少UILabel寬度(請參閱下面的代碼)但沒有任何效果。如何彌補空表視圖

enter image description here

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 

    if array.count > 0 { 
     self.tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine 
     return array.count 
    } else { 
     let messageLabel = UILabel(frame: CGRect(x: 20.0, y: 0, width: self.tableView.bounds.size.width - 40.0, height: self.tableView.bounds.size.height)) 
     messageLabel.text = "This is the message I would like to display when there is nothing returned from my model" 
     messageLabel.numberOfLines = 0 
     messageLabel.textAlignment = NSTextAlignment.Center 
     messageLabel.sizeToFit() 

     tableView.backgroundView = messageLabel 
     self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None 
    } 

    return 0 
} 

回答

0

參考的UITableView類Reference

甲表視圖的背景視圖會自動調整大小以匹配 大小表格視圖。

我會建議你使用DZNEmptyDataSet

或實現您的tableView的頂部標籤空視圖。

0

你CGRect不工作的原因是我敢打賭,因爲你有自動佈局設置。 Autolayout不允許您在代碼中通過CGRect進行更改。

繼續操作並停用自動佈局,看看會發生什麼。

0

添加一些約束,以正確定位視圖中的標籤。看看下面的代碼獲取靈感,但請注意,這是一個非常快速和骯髒的解決方案。在else塊中添加一個print(),您會看到該塊被多次調用。你一定要看看更好的方式顯示消息。

else { 

    let width = self.tableView.bounds.size.width - 40.0 
    let messageLabel = UILabel() 
    messageLabel.text = "This is the message I would like to display when there is nothing returned from my model" 
    messageLabel.numberOfLines = 0 
    messageLabel.textAlignment = NSTextAlignment.Center 

    let widthConstraint = NSLayoutConstraint (
      item: messageLabel, 
      attribute: NSLayoutAttribute.Width, 
      relatedBy: NSLayoutRelation.Equal, 
      toItem: nil, 
      attribute: NSLayoutAttribute.NotAnAttribute, 
      multiplier: 1, 
      constant: width 
    ) 

    let xConstraint = NSLayoutConstraint(
      item: messageLabel, 
      attribute: .CenterX, 
      relatedBy: .Equal, 
      toItem: self.tableView, 
      attribute: .CenterX, 
      multiplier: 1, 
      constant: 0 
    ) 

    let yConstraint = NSLayoutConstraint(
      item: messageLabel, 
      attribute: .CenterY, 
      relatedBy: .Equal, 
      toItem: self.tableView, 
      attribute: .CenterY, 
      multiplier: 0.85, 
      constant: 0 
    ) 

    self.tableView.backgroundView = messageLabel   
    self.tableView.backgroundView?.translatesAutoresizingMaskIntoConstraints = false 
    NSLayoutConstraint.activateConstraints([widthConstraint, xConstraint, yConstraint]) 

    self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None 
} 

這給了你:

Screenshot of