【问题标题】:Swift3: Re-draw Table View from inside custom table view cell classSwift 3:从自定义表格视图单元类内部重绘表格视图
【发布时间】:2017-01-05 17:41:54
【问题描述】:

我有一个包含表格视图的视图控制器。表格视图中的单元格具有删除单元格包含的数据的按钮。当我按下删除按钮时,单元格信息会从我的数据库中删除,但表格视图不会更新,直到我来回切换。

我不确定如何访问 TableView 并强制它从我的表格单元格内的方法中重新绘制自己。

class EditTaskTableViewCell: UITableViewCell {

   //......//

    @IBAction func deleteButtonPressed(_ sender: Any) {
        let userDefaults = Foundation.UserDefaults.standard
        if let userTasks = userDefaults.array(forKey: "userTasks"){
            let newArray = removeTask(item: taskNameLabel.text!, from: userTasks as! [String])
            userDefaults.set(newArray, forKey: "userTasks")
            userDefaults.synchronize()
        }

        //update table view 

    }
}


class EditTaskTable_VC: UIViewController, UITableViewDelegate, UITableViewDataSource {

   //......//

   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

           let cell = Bundle
           .main
           .loadNibNamed("EditTaskTableViewCell", owner: self, options: nil)?
           .first as! EditTaskTableViewCell

          cell.taskName.text = cellData[indexPath.row].title 

          return cell       

   }

   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       return cellData.count
   }

【问题讨论】:

  • 与您的问题无关,但不要使用 UserDefaults 来存储您的用户数据。
  • 你在哪里设置单元格的信息,在EditTaskTableViewCell 内的func()ViewController 中?
  • 我在TaskTableViewController 中构建单元格的数据(如标签)。 @fantini

标签: ios uitableview swift3 uikit


【解决方案1】:

尝试使用委托。

示例在 Objective C 中,但总体思路在那里。

sending reload data from custom tableview cell?

快速委托示例

https://gist.github.com/austinzheng/db58036c4eb825e63e88

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多