不是控制器。我想从customcell.swift类
调用segue也没有显示forse segue方法
答案 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方法。