从Swift

时间:2015-09-07 09:30:07

标签: ios swift uitableview

我有一个自定义可扩展的UITableViewCell。展开后,它会显示几个UITextField。我希望在UITextField的值发生更改后更新UITableView中的表数据。检测变更事件不是问题。

是否有一种从UITableViewCell访问自定义UITableView控制器的简单方法?我应该在cellForRowAtIndexPath创建单元格时创建引用吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我有同样的需要。我想用

从自定义单元格重新加载tableview
self.tableView.reloadData()

其中self引用UITableViewController。

我找到的最简单的方法是使用委托模式。

class MyTableVC:MyProtocol{
...
  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  ...
  (cell as! MyCell).delegate   =   self
  ...
  }

  func reloadData() {
    self.tableView.reloadData()
  }
....
}

我的自定义单元格及其协议声明

protocol MyProtocol : NSObjectProtocol {
    func reloadData()
}

class MyCell: UITableViewCell{
 ...
  weak var delegate: MyProtocol?

// When the job is done call reloadData()
  self.delegate?.reloadData()
}

答案 1 :(得分:0)

在上面的答案中,在第三行中,您将UIView与UIViewController对象进行比较。

  if (view!.isKindOfClass(CustomTableViewController)) {

试试这个,

 if (view!.isKindOfClass(CustomTableViewController.view)) {