从控制器重新加载 UITableView

Posted

技术标签:

【中文标题】从控制器重新加载 UITableView【英文标题】:Reload UITableView from Controller 【发布时间】:2015-11-03 09:55:12 【问题描述】:

我有classVC,一个包含 UITableView 和其他东西的 UIViewcontroller。

我有 classTVC 是一个 UITableViewController。

classVC 中实例化var TVC = classTVC()

然后我以编程方式将 UITableView 的 delegatedatasource 设置为 TVC

问题:

在控制器TVC我声明了以下方法:

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? 
    let delete = UITableViewRowAction(style: .Destructive, title: "Delete")  (action, indexPath) in
        // delete item at indexPath
    
    let share = UITableViewRowAction(style: .Normal, title: "Disable")  (action, indexPath) in
        // share item at indexPath
    

    share.backgroundColor = UIColor.blueColor()

    return [delete, share]

如何在sharedelete 动作执行后重新加载UITableView?它发生在 UITableViewController 所以我不能打电话给.reloadData()

我已经尝试检索 parentViewController 等,但它看起来很脏

【问题讨论】:

【参考方案1】:

只需捕获块中的 tableView 并调用 reloadData

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? 
let delete = UITableViewRowAction(style: .Destructive, title: "Delete")  (action, indexPath) in
    // delete item at indexPath
    ...
    tableView.reloadData()

  let share = UITableViewRowAction(style: .Normal, title: "Disable")  (action, indexPath) in
    // share item at indexPath
    ...
    tableView.reloadData()

【讨论】:

我怎么会错过这个...我去拿个保险箱,谢谢

以上是关于从控制器重新加载 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

从控制器重新加载配置(asp.net 核心应用程序)

如何从其他类重新加载整个 tableview 控制器 [关闭]

如何快速从另一个视图控制器重新加载表格视图

每次将视图控制器压入堆栈时,如何从 appDelegate 重新加载视图控制器?

如何从 Modal ViewController 重新加载父 UITableViewController 中的数据

从 iOS 中的 UIView 子视图重新加载时 UITableView 未重新加载