【问题标题】:Access UITableView from custom UITableViewCell in Swift从 Swift 中的自定义 UITableViewCell 访问 UITableView
【发布时间】:2015-12-02 19:29:56
【问题描述】:

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

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

谢谢!

【问题讨论】:

标签: ios swift uitableview


【解决方案1】:

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

  if (view!.isKindOfClass(CustomTableViewController)) {

试试这个,

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

【讨论】:

  • 这似乎不起作用:“CustomTableViewController.Type”没有名为“view”的成员
  • 一个 UIViewController 对象必须包含一个视图,不管控制器是不是自定义的。
【解决方案2】:

我也有同样的需要。我想从自定义单元格重新加载表格视图

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()
}

【讨论】:

    猜你喜欢
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2019-06-22
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    相关资源
    最近更新 更多