Uitableviewcell调用uiviewcontroller函数不起作用swift ios

Posted

技术标签:

【中文标题】Uitableviewcell调用uiviewcontroller函数不起作用swift ios【英文标题】:Tableviewcell calling uiview controller function not working swift ios 【发布时间】:2017-04-20 11:41:08 【问题描述】:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
   cell.viewcontroller = self


func reloadData()
    // reload function here, so when called it will reload the tableView
    self.notificationTable.reloadData()

Tableview 单元格按钮代码

@IBAction func deleteRecord(_ sender: Any) 
    self.viewController.reloadData() //<-- 

遇到错误

@

NotificationTableViewCell.swift:64:18: 类型值 'UIViewController' 没有成员 'reloadData'

【问题讨论】:

在这里self.viewController.reloadData()使用你的tableview名称self. notificationTable.reloadData() 为什么你在 tableViewCell 中声明了 deleteRecord() ? 你查过max的答案了吗? 【参考方案1】:

试试这个(self.viewController as? YourViewControllerClass).reloadData()UIViewController 没有 reloadData() 方法 - 只有你的子类有。

【讨论】:

【参考方案2】:

你需要使用 NSNotificationCenter 调用 reload 方法

// 在你的 ViewController 的 ViewDidLoad 中声明

// Register to receive notification
    NotificationCenter.default.addObserver(self, selector: #selector(YourClassName. reloadData), name: Notification.Name("NotificationIdentifier"), object: nil)

在 TableViewCell 中

@IBAction func deleteRecord(_ sender: Any) 
        // Post notification
    NotificationCenter.default.post(name: Notification.Name("NotificationIdentifier"), object: nil)

【讨论】:

以上是关于Uitableviewcell调用uiviewcontroller函数不起作用swift ios的主要内容,如果未能解决你的问题,请参考以下文章

无法从 UITableViewCell 调用 performeguewithidentifier

iOS:调用方法的 UITableViewCell 中的 UITextField

UITableViewCell 对象不调用 awakeFromNib

第一个 UITableViewCell 没有调用 didSelectRowAtIndexPath

uiTableviewcell 中未调用 UicollectionView didSelectItemAtIndexPath

在 UITableviewcell 中调用多个按钮