ios - 一旦列表被删除,UITableView 将不会刷新。 self.tableView.reloadData() 也不起作用

标签 ios swift uitableview tableview

我对开发 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/

相关文章:

ios - 如何启用/禁用特定文本字段的 OneTimeCode 功能?

ios - UITableViewCell 在 cell.textLabel 中显示长文本

iOS:Swift 中 UITableViewCell 的垃圾桶删除按钮

c++ - 如何在 QTableView 中使用就地 QComboBox

ios - 合并:发布者有时会失去值(value)并完成

ios - 滑动手势返回结合 navigationBarHidden 设置为 YES

ios - 如何在 Swift 中使用 XIB 文件初始化/实例化自定义 UIView 类

iOS 谷歌标签管理器在启动时崩溃 'NSParseErrorException',原因 : 'Last tag: 116 should be 124'

UIImageView 上的 iOS CAKeyframeAnimation rotationMode

objective-c - 使用共享 Web 凭据时禁用弹出窗口(直接工作)