2017-05-31 87 views
0

我正在構建一個tableView,它在空的時候顯示一條消息。如何製作表格如果tableview爲空,則顯示消息並顯示消息?

我使用的是在這個問題上(Handling an empty UITableView. Print a friendly message)這使我的功能真正有用的答案:

func emptyMessage(message:String, viewController:UITableViewController) { 
     let VCSize = viewController.view.bounds.size 
     let messageLabel = UILabel(frame: CGRect(x:0, y:0, width:VCSize.width, height:VCSize.height)) 
     messageLabel.text = message 
     messageLabel.textColor = UIColor.black 
     messageLabel.numberOfLines = 0 
     messageLabel.textAlignment = .center; 
     messageLabel.font = UIFont(name: "Futura", size: 15) 
     messageLabel.sizeToFit() 
     viewController.tableView.backgroundView = messageLabel; 
     viewController.tableView.separatorStyle = .none; 
    } 

我可以在每一個表格視圖數據源這樣調用這個:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
if projects.count > 0 { 
    return 1 
} else { 
    TableViewHelper.EmptyMessage("You don't have any projects yet.\nYou can create up to 10.", viewController: self) 
    return 0 
} 
} 

哪些工作。但是我寧願不必重複實現它,而是在數據源中使用一個方法來定製tableview,並詢問您想要添加的消息。

我試過擴展TableView類或製作tableView的子類,但我認爲這不是解決方案。相反,我認爲解決方案是覆蓋UITableViewDataSource協議,但是我對協議和委派的瞭解還不夠。

我希望我在這個正確的軌道上。並澄清我可以做到這一點上面提到的方式,但我試圖覆蓋的功能,使我不重複自己的智能解決方案。

回答

0

有一個很好的圖書館:

https://github.com/dzenbot/DZNEmptyDataSet

這可以用於所有類型,如UITableView的,UICollectionView等

容器符合某些DZNEmptyDataSetSourceDZNEmptyDataSetDelegate後,您可以簡單地實現這些功能:

func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? { 
     let str = "Empty Data." 
     let attrs = [NSFontAttributeName: UIFont.preferredFont(forTextStyle: UIFontTextStyle.headline)] 
     return NSAttributedString(string: str, attributes: attrs) 
    } 

    func description(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? { 
     let str = "Any Details about empty data." 
     let attrs = [NSFontAttributeName: UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)] 
     return NSAttributedString(string: str, attributes: attrs) 
    } 

除此之外,你可以添加一個屁股開始執行一些操作。請參閱圖書館以獲取更多功能。

+0

真的很感謝這一點,我看了看圖書館,這將工作。我沒有在問題中指定,所以你不會知道,但我沒有去圖書館的原因是我想了解我如何做到這一點的理論。我會嘗試閱讀github文件,看看他們是如何做到的。謝謝! –