如何从uitableviewcell类调用segue?不是控制器

时间:2019-04-05 22:21:49

标签: ios swift uitableview segue

不是控制器。我想从customcell.swift类

调用segue

也没有显示forse segue方法

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为您没有更多地进入视图控制器,并且您无权访问导航堆栈方法...

解决此问题的好方法,您可以通过协议使用委托模式。

因此您可以使用以下代码创建带有操作的协议:

protocol CustomCellDelegate {
   func didTapAnyButton(_ anyParam: String)
}

在UITableViewCell中,您只需创建以下委托属性:

weak var delegate: CustomCellDelegate?

Ps:为避免内存泄漏,我创建了弱函数,它是可选函数,因为该属性将使用nil值初始化,并且viewController会在创建该属性后将该值设置为该属性。

因此,您可以在ViewController中实现以下协议:

extension ViewController: CustomCellDelegate {
   func didTapAnyButton(_ anyParam: String) {
       performSegue()
   }
}

考虑到您有一个名为CustomCell的UITableViewCell,至少应该在实例化CustomCell时分配ViewController委托。

let cell = tableView.dequeReusableCellWithIdentifier(“CustomCel”) as! CustomCell

cell.delegate = self

之后,您只需在需要执行的操作上调用委托方法tapAnyButton,即可:

delegate.didTapAnyButton(“Some Param that I need to pass on segue method.”)

因此,当您调用此方法时,将触发分配此委托协议的ViewController!在ViewController中,您可以访问segue方法。