如果我的数组中有数据,空的 tableview 标签会闪烁一秒钟
Posted
技术标签:
【中文标题】如果我的数组中有数据,空的 tableview 标签会闪烁一秒钟【英文标题】:Empty tableview label flashes for a second if there is data in my array 【发布时间】:2018-05-30 02:09:44 【问题描述】:嗨,我搜索了堆栈溢出并看到了If no Table View results, display "No Results" on screen 这很有用,但不完全是我想要的。 我的问题是当我按照这些步骤操作时它可以正常工作。但如果我的 tableview 确实有数据,它会在填充我的数据之前闪烁我的“空 tableview 标签”一两秒。在我看来,这看起来很糟糕。
我有一个通过我的 tableview 上的插座连接的标签,称为 emptyTableViewlbl。这是我的代码被调用。在此先感谢任何帮助。谢谢
extension FeedViewController: UITableViewDataSource, UITableViewDelegate
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if posts.isEmpty
emptyTableViewLbl.isHidden = false
emptyTableViewLbl.text = "Empty tableview label"
return 0
else
emptyTableViewLbl.isHidden = true
return posts.count
并尝试过
override func viewDidLoad()
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
loadPosts()
if posts.isEmpty
emptyTableViewLbl.isHidden = false
emptyTableViewLbl.text = "Empty"
else
emptyTableViewLbl.isHidden = true
【问题讨论】:
你的numberOfRowsInSection
不能做任何事情,除了返回一个计数。它可以在任何时候被调用任意次数。切勿更新任何视图或任何其他内容,除非返回一个数字。
显示“空”标签的正确位置是loadPosts
完成但未找到任何帖子。
感谢@rmaddy 澄清考虑到几乎每个教程/帖子都说要检查 numberOfRowsInSection。您能否为我们提供解决此问题的正确解决方案。我相信它会帮助很多人谢谢!
@Paulw11 感谢您回复我,尽管这是有道理的。在调用之前,我不知道我的 loadPosts 是否真的有数据。因此,我的状况从未得到检查。
@Paulw11 的评论给出了正确的解决方案。根据结果更新loadPosts
中的“空”标签。
【参考方案1】:
您可以使用didSet
这样做
假设你的数组是
var posts:[Post]
didSet
if posts.isEmpty
emptyTableViewLbl.isHidden = false
else
emptyTableViewLbl.isHidden = true
tableview.reloadData()
tableview.isHidden = !emptyTableViewLbl.isHidden
【讨论】:
以上是关于如果我的数组中有数据,空的 tableview 标签会闪烁一秒钟的主要内容,如果未能解决你的问题,请参考以下文章
tableview 是空的,但我看到操场上的数据来自 urlsession
Swift - 来自URLSession任务的TableView数据源
如何将网格线保留在空的 TableView Javafx 中