ios - swift 4 : New Viewcontroller when tapped on a cell with separate class

标签 ios swift uitableview

我有一个 tableview,它有自己的类以便可重用。我的问题是现在我想添加:

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

tableView.deselectRow(at: indexPath, animated: false)
let vc = UIStoryboard(name: "Main", bundle:nil).instantiateViewController(withIdentifier: "eventView") as! eventView 
vc.event = self.eventsToLoad[indexPath.row]
self.present(vc, animated: true, completion:nil)

}

但是由于 tableview 有自己的类,我不能自己没有 present 方法。我也不想使用 segue 或 navigationcontroller 或任何东西,以便能够在任何地方使用这个 tableview。

最佳答案

如果您要让 tableView 成为它自己的委托(delegate),那么您必须添加自己的自定义委托(delegate)来通知演示者(在您的情况下是 View Controller )有关 didSelectRowAt 事件。

喜欢:

protocol CustomTableViewDelegate: class {
    func customTableView(_ tableView: CustomTableView, didSelectRowAt indexPath: IndexPath)
}

class CustomTableView: UITableView, UITableViewDelegate {
    weak var customDelegate: CustomTableViewDelegate?
    //... other properties and UITableViewDelegate implementation
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        customDelegate?.customTableView(self, didSelectRowAt: indexPath)
    }
}

class SomeViewController: CustomTableViewDelegate {
    func customTableView(_ tableView: CustomTableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: false)
        let vc = UIStoryboard(name: "Main", bundle:nil).instantiateViewController(withIdentifier: "eventView") as! eventView 
        vc.event = self.eventsToLoad[indexPath.row]
        self.present(vc, animated: true, completion:nil)
    }
}

关于ios - swift 4 : New Viewcontroller when tapped on a cell with separate class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54910420/

相关文章:

ios - Swift - 弹出 View ,日期选择器?

ios - 为什么我的 MPEG-TS 无法在 iOS 上播放?

ios - SKNodes 不显示在场景中

ios - 从字符串中获取 NSDate 对象

android - 你如何管理你的 Assets ?

ios - 在场景之间传递时加载动画

ios - 如何防止 UIButton "clipsToBounds"剪切标签?

swift - 从 UITableViewController 导航到详细信息 View Controller 时,ENSideMenu 不会再次快速打开

ios - swift 2 : UITableViewDataSource protocol extension

ios - 部分中的数组问题(TableView)