我对开发 Swift 和 iOS 比较陌生,但对代码并不陌生。我对表格 View 有点恼火。
我已经无数次尝试使用 self.tableView.reloadData()
但无济于事。我也试过了
async call dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
但这也行不通。我会发布功能,这样也许有人可以启发我我搞砸的地方。非常感谢您的帮助。
@IBAction func clearList(sender: AnyObject) {
let alert = UIAlertController(title: "Clear List?",
message: "Are you sure you want to clear the list?",
preferredStyle: .Alert)
let yesClearAction = UIAlertAction(title: "Yes", style: .Default, handler: { (action:UIAlertAction) -> Void in
self.clearListNow("GroceryList")
})
let noClearAction = UIAlertAction(title: "No", style: .Default, handler: { (action:UIAlertAction) -> Void in
//do nothing aka don't clear list
})
alert.addAction(yesClearAction)
alert.addAction(noClearAction)
presentViewController(alert, animated: true, completion: nil)
self.tableView.reloadData()
}
以防万一有人想看看 clearListNow
做了什么...
func clearListNow(entity: String) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "GroceryList")
fetchRequest.returnsObjectsAsFaults = false
do
{
let results = try managedContext.executeFetchRequest(fetchRequest)
for managedObject in results
{
let managedObjectData:NSManagedObject = managedObject as! NSManagedObject
managedContext.deleteObject(managedObjectData)
}
} catch let error as NSError {
print("Detele all data in \(entity) error : \(error) \(error.userInfo)")
}
}
我还尝试在 clearListNow
函数中使用 self.tableView.reloadData()
。我曾尝试同时和分别将语句放在这两个场景中,但两种情况都没有奏效。
最佳答案
重新加载您的 tableView
当使用时在您的警报中按 Yes 如下代码所示:
let yesClearAction = UIAlertAction(title: "Yes", style: .Default, handler: { (action:UIAlertAction) -> Void in
self.clearListNow("GroceryList")
self.tableView.reloadData()
})
关于ios - 一旦列表被删除,UITableView 将不会刷新。 self.tableView.reloadData() 也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34916943/