Reputation: 1375
I have this code in one of my IBAction (when a button is pressed), which is supposed to bring up a new view controller.
let addAlertVC = self.storyboard?.instantiateViewController(withIdentifier: "addAlert")
self.present(addAlertVC!, animated: false, completion: nil)
However, when I run the app and press the button that's supposed to take me to the new viewcontroller
, but then I'm stuck with the original viewcontroller
. I have put a print statement in the viewDidAppear
function in the new view controller, and it is printing out whenever I press the button, so the new controller is definitely appearing. I have not dismissed the new controller anywhere in my app.
I have used the same code in other parts of my app, so I'm extremely confused as to why it's not working this time.
Any help would be greatly appreciated.
EDIT: I fixed my code. It turns out it wasn't how I was calling the view controller that was wrong, it was my button. Once I deleted and re-added the button, my code now works.
Upvotes: 0
Views: 77
Reputation: 9144
There is a good chance that your view controller is deallocated after you present it.
Try to declare your view controller outside of the function, in your controller. Something like:
class ViewController{
var addAlertVC:UIViewController?
...
func someFunction(){
addAlertVC = self.storyboard?.instantiateViewController(withIdentifier: "addAlert")
self.present(addAlertVC!, animated: false, completion: nil)
}
}
Upvotes: 1