I am trying to activate a segue between a UICollectionView, subview of a UIViewController, and a separate ViewController (called RegisterController). The CollectionView is all set up programmatically, and there is a button on the last cell. However, I can't do the typical performSegue(_:withIdentfier) because the button is in the CollectionView. So, I have set up a method in the ViewController holding the CollectionView to performSegue(_:withIdentifier). I set up an instance in the CollectionViewController to call the method: 
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()
}
The method in the ViewController is
func toRegister(){
    performSegue(withIdentifier: "toRegister", sender: self)
}
I am getting the call stack: 
    NSInvalidArgumentException', reason: 'Receiver      (<audible.ViewController: 0x7fe780724770>) has no segue with identifier 'toRegister''
I know I'm probably doing something completely wrong, but I've searched and searched and can't find a solution. Any help is appreciated, thanks
(Yes, I have configured the segue and gave it an identifier in the storyboard, but the reason I have to do this through code is because the CollectionView and the button are created programmatically, so I can't use the Interface Builder)