I have a vc called ViewControllerOne, when the user taps a UITableViewCell I call a push segue and navigate to ViewControllerTwo. In ViewControllerTwo I'm hiding the navigation bar, therefore I've created a custom back button:
- (IBAction)backBttn:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
that works perfectly, but the viewDidLoad getting called (in ViewControllerTwo) every time I navigate back to ViewControllerOne and than open ViewControllerTwo again. Am I right that viewDidLoad getting called because I'm using [self.navigationController popViewControllerAnimated:YES]? Or it must have another reason?
If I understand you right you are seeing viewDidLoad called on the view controller you are pushing to. (
ViewControllerTwo). If you push fromViewControllerOnetoViewControllerTwo,ViewControllerTwo's viewDidLoad is being called.If you then click the back button to pop
ViewControllerTwo, return toViewControllerOne, then push toViewControllerTwoagain, you seeviewDidLoadbeing called a second time.This is expected behavior. Push segues (and all other segues except unwind segues) create a new instance of the view controller they are presenting.
Likewise, popping/dismissing deallocates the view controller you are leaving.