Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从uitableviewcell类调用segue?非控制器_Ios_Swift_Uitableview_Segue - Fatal编程技术网

Ios 如何从uitableviewcell类调用segue?非控制器

Ios 如何从uitableviewcell类调用segue?非控制器,ios,swift,uitableview,segue,Ios,Swift,Uitableview,Segue,不是控制器。我想从customcell.swift类中调用segue 另外,segue方法的preparefor不会显示,这是因为您没有更多地进入视图控制器,并且您没有访问导航堆栈方法的权限 解决这个问题的一个很好的方法是,您可以使用协议来使用委托模式 因此,您可以创建一个协议,其操作如下所示: protocol CustomCellDelegate { func didTapAnyButton(_ anyParam: String) } 在UITableViewCell中,只需创建此委

不是控制器。我想从customcell.swift类中调用segue


另外,segue方法的preparefor不会显示,这是因为您没有更多地进入视图控制器,并且您没有访问导航堆栈方法的权限

解决这个问题的一个很好的方法是,您可以使用协议来使用委托模式

因此,您可以创建一个协议,其操作如下所示:

protocol CustomCellDelegate {
   func didTapAnyButton(_ anyParam: String)
}
在UITableViewCell中,只需创建此委托属性:

弱var委托:CustomCellDelegate?

Ps:我已经用弱创建了以避免内存泄漏,并且是可选的,因为属性将用nil值初始化,并且viewController将在创建后将该值设置为此属性

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

extension ViewController: CustomCellDelegate {
   func didTapAnyButton(_ anyParam: String) {
       performSegue()
   }
}
至少在实例化CustomCell时,您应该只分配ViewController委托,因为您有一个名为CustomCell的UITableViewCell:

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

cell.delegate = self
之后,您可以在需要执行的操作处调用委托方法tapAnyButton,例如:

delegate.didTapAnyButton(“我需要传递给segue方法的某个参数”)


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

您肯定可以在中找到答案。