not very expert with RxSwift, I tested some solution found here, such this but not working. Don't know if issue is about size of an empty tableview or som other UI update related issue.
the tableView I am using is a bit customized such this
public class SelfSizedTableView: UITableView {
public override var intrinsicContentSize: CGSize {
self.layoutIfNeeded()
return self.contentSize
}
public override var contentSize: CGSize {
didSet{
self.invalidateIntrinsicContentSize()
}
}
public override func reloadData() {
super.reloadData()
self.invalidateIntrinsicContentSize()
}
}
the solution I am testing
extension UITableView {
func setEmptyMessage(_ message: String) {
let messageLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.bounds.size.width, height: self.bounds.size.height))
messageLabel.text = message
messageLabel.textColor = .black
messageLabel.numberOfLines = 0
messageLabel.textAlignment = .center
messageLabel.font = UIFont(name: "TrebuchetMS", size: 15)
messageLabel.sizeToFit()
self.backgroundView = messageLabel
self.separatorStyle = .none
}
func restore() {
self.backgroundView = nil
self.separatorStyle = .singleLine
}
}
self.viewModel.things.subscribe(onNext: { [unowned self] things in
if things.isEmpty {
self.myTableView.backgroundColor = .purple
self.myTableView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
self.myTableView.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(200), height: CGFloat(200))
self.myTableView.setNeedsLayout()
self.myTableView.layoutIfNeeded()
self.myTableView.setEmptyMessage("My Message")
} else {
self.myTableView.restore()
}
}).disposed(by: self.rx.disposeBag)