我有两个UITableViewController
,我使用导航控制器从视图#2返回到视图#1。
在第一个视图中,我从UIPickerView
中选择一些值,然后通过按钮触摸它将转到第二个视图,第二个视图根据视图#1中的UIPicker
选择显示一些单元格,当我回到第一个视图并更改UiPicker的选择并按下按钮转到第二个视图时,我的问题就出现了,我会在那里找到旧的单元格,直到我的视图#2重新加载新数据在这个功能里面
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.tableView.reloadData()
}
我尝试从所有数组中删除数据并使用空数据再次重新加载,尝试删除旧的单元格,如下所示:
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
arra1=[]
arra2=[]
self.tableView.reloadData()
}
这里是我的代码,它将数据从视图#1传递到视图#2:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "MySegue") {
let destinationVC:onCallEmployee = segue.destinationViewController as! onCallEmployee
if self.selectedDeptIndex != 0 {
destinationVC.previewsViewData.append(String(self.selectedDeptIndex))
}
if self.teamsIdByName[selectedTeamName] != nil{
destinationVC.previewsViewData.append(self.teamsIdByName[selectedTeamName]!)
}
if self.servicesIdByName[selectedServiceName] != nil {
destinationVC.previewsViewData.append(self.servicesIdByName[selectedServiceName]!)
}
}
}
在返回查看#1之前,有没有办法清理视图#2?
答案 0 :(得分:1)
而不是在
中重新加载你的表格override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.tableView.reloadData()
}
在
中执行此操作override func viewWillAppear(_ animated: Bool) { {
super.viewWillAppear(animated)
self.tableView.reloadData()
}
答案 1 :(得分:1)
UITableViewCells
中陈旧数据的问题通常表明您需要在单元格中正确实施prepareForReuse
以完全清除旧单元格数据。
func prepareForReuse() {
myTextCell.text = ""
}
prepareForReuse
将在从UITableView.dequeueCell...
答案 2 :(得分:1)
使用此:
dispatch_async(dispatch_get_main_queue(), {
self.tableView.reloadData()
})
而不是:
self.tableView.reloadData()