ios - 空 tableView 上没有结果标签

标签 ios swift uitableview

如果 tableView 为空,我将添加“无结果”标签。

extension UITableView {
    override open func layoutSubviews() {
        print("Table layoutSubviews")
        let label = UILabel(frame: self.bounds)
        if self.visibleCells.isEmpty {
            label.center = self.center
            label.text = "No Results"
            label.textAlignment = .center
            if label.superview == nil {
                self.addSubview(label)
            }
        } else {
            label.removeFromSuperview()
        }
    }
}

但这不适用于更新/重新加载 tableView(在行更改时)。 它仍然在非空 UITableView

上显示“无结果”

最佳答案

extension UITableView {

    func setMessage(_ message: String) {
        let lblMessage = UILabel(frame: CGRect(x: 0, y: 0, width: self.bounds.size.width, height: self.bounds.size.height))
        lblMessage.text = message
        lblMessage.textColor = .black
        lblMessage.numberOfLines = 0
        lblMessage.textAlignment = .center
        lblMessage.font = UIFont(name: "TrebuchetMS", size: 15)
        lblMessage.sizeToFit()

        self.backgroundView = lblMessage
        self.separatorStyle = .none
    }

    func clearBackground() {
        self.backgroundView = nil
        self.separatorStyle = .singleLine
    }
}

现在像下面这样使用这个扩展

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    if items.count == 0 {
        tableView.setMessage("No results")
    } else {
        tableView.clearBackground()
    }

    return items.count
}

关于ios - 空 tableView 上没有结果标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51512727/

相关文章:

ios - 如何在 Swift 中创建单例

ios - 应用程序委托(delegate)事件(例如: applicationWillTerminate) to my custom class

arrays - 如何在 Swift 中更新合并后的数组

ios - 升级到 MT 4.0 后索引 TableViews 不显示

iphone - 如何从 uitableviewcell 选择中设置 subview 的标题

android - 我应该用什么来制作角色动画?

ios - UITextView 字体为零

ios - 如何在搜索操作后更新过滤后的 tableView 中的 tableViewCell 数据?

ios - iphone App 中字符串的幻灯片放映

ios - Swift 3 中的 Firebase 多级数据库处理