我正在尝试激活UICollectionView,UIViewController的子视图和单独的ViewController(称为RegisterController)之间的segue。 CollectionView全部以编程方式设置,最后一个单元格上有一个按钮。但是,我无法执行典型的performSegue(_:withIdentfier)
,因为该按钮位于CollectionView中。所以,我在ViewController中设置了一个方法,将CollectionView保存到performSegue(_:withIdentifier)
。我在CollectionViewController中设置了一个实例来调用方法:
lazy var registerButton: UIButton = {
let btn = UIButton(type: .system)
btn.setTitle("Don't have an account?", for: .normal)
btn.setTitleColor(lighterOrange, for: .normal)
btn.addTarget(self, action: #selector(registerScreenAppear), for: .touchUpInside)
return btn
}()
@objc func registerScreenAppear(){
let vc: ViewController = ViewController()
_ = vc.toRegister()
}
ViewController中的方法是
func toRegister(){
performSegue(withIdentifier: "toRegister", sender: self)
}
我收到了调用堆栈:
NSInvalidArgumentException', reason: 'Receiver (<audible.ViewController: 0x7fe780724770>) has no segue with identifier 'toRegister''
我知道我可能做了一些完全错误的事情,但我已经进行了搜索和搜索,无法找到解决方案。感谢任何帮助,谢谢
(是的,我已经配置了segue并在故事板中给它一个标识符,但我必须通过代码执行此操作的原因是因为CollectionView和按钮是以编程方式创建的,所以我无法使用Interface Builder)
答案 0 :(得分:1)
在registerScreenAppear方法中调用performSegu
e或致电self.toRegister()
@objc func registerScreenAppear(){
self.toRegister()
}
OR
@objc func registerScreenAppear(){
performSegue(withIdentifier: "toRegister", sender: self)
}
注意:稍后使用,因为它将删除额外的函数调用,即toRegister()。