when user clicked button
let uvc: UINavigationController =
self.storyboard?.instantiateViewController(withIdentifier: "nationSelect") as! UINavigationController
uvc.modalTransitionStyle = UIModalTransitionStyle.coverVertical
self.present(uvc, animated: true, completion: nil)
run this code.
identifier:nationSelect storyboard img
cell, closebutton, VC segue unwind img
and button vc have this function
@IBAction func unwindFromPostCodeSelectionView(_ sender: UIStoryboardSegue) {
print("unwindFromPostCodeSelectionView")
}
and nationSelect VC
when collectionview's cell clicked run this code
performSegue(withIdentifier: unwind, sender: nil)
and prepare function
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let identifier = segue.identifier, identifier == unwind else{
return
}
guard let vc = segue.destination as? CurationRequestViewController else {
return
}
vc.getAddress.setTitle( (continent.text ?? " ") + " " + nation , for: .normal)
}
but i got this error
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver () has no segue with identifier 'unwind''
help me plz!!!
答案 0 :(得分:1)
Looks like you are trying to implement unwind segue and you missed to specify the identifier for unwind segue.
Here are the steps to properly implement unwind segue:
Step 1: If you are trying to implement unwind segue from Vc2 to Vc1 (Coming back to VC1 from VC2) then in VC1 add the IBAction
as
@IBAction func unwindToViewController1(segue : UIStoryboardSegue) {
//you will get control back here when you unwind
}
Step 2: Open storyboard, select VC2 and control drag from ViewController to Exit option in storyboard as shown below
This should show a popover and the method you just declared select it.
Step 3: (Step I think you missed) Select the unwind segue you just added and provide a identifier to it.
Step 4: Now whenever you wanna return back to VC1 you can simply call
self.performSegue(withIdentifier: "unwindSegueToViewController1", sender: nil)
Hope it helps :) Happy coding