MessagesTableViewController

MessagesTableViewController

我有一个UITableViewController,当用户单击TableView中的单元格时,需要从另一个CCController中调用一个函数。问题是我无法在包含函数的ViewController中将委托分配给self。问题在于以下行:

let messageTableVC = UITableViewController() as! MessagesTableViewController
messageTableVC.messageDelegate2 = self


let语句的生成没有错误,但是应用程序在运行时在该行崩溃并显示此错误:


  无法将类型'UITableViewController'(0x1b77cb588)的值强制转换为
  'MFPApp.MessagesTableViewController'(0x100719e08)。


MessagesTableViewControllerUITableViewController。我尝试过转换为其他ViewController类型,但不会构建其他任何东西。
以下是相关代码:

MessagesTableViewController

    protocol openMessageDelegate2 {
        func addNewTab2()
    }
class MessagesTableViewController: UITableViewController, IndicatorInfoProvider {
    var messageDelegate2: openMessageDelegate2!

        override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

            print("cell clicked")
            messageDelegate2?.addNewTab2()

        }

}


在第二个VC中:

class MainViewController: ButtonBarPagerTabStripViewController {

    override func viewDidAppear(_ animated: Bool) {

        let messageTableVC = UITableViewController() as! MessagesTableViewController
        //let messageTableVC = MessagesTableViewController()
        messageTableVC.messageDelegate2 = self
}

}

extension MainViewController: openMessageDelegate2 {

    func addNewTab2(){
        print("new tab")
        addNewVC = "yes"
        self.reloadPagerTabStripView()
        self.moveToViewController(at: childViewControllers2.count-1)
    }
}

最佳答案

由于UITableViewController不是MessagesTableViewController的子类,因此不能这样转换。

如果您只是想实例化MessagesTableViewController,只需将该行更改为:

let messageTableVC = MessagesTableViewController()
messageTableVC.messageDelegate2 = self

关于ios - 如何在Swift中使用委托(delegate)在具有TableViewController的TableView中单击单元格来调用函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48193314/

10-11 17:23