★☆★ SOLVED ★☆★
Reason for problem
Doing push or pop inside -(void)viewDidAppear:(BOOL)animated method makes navigation stack unstable.
Solution
Create separate method for push or pop related process and call that method from another view controller (avoid push or pop inside -(void)viewDidAppear:(BOOL)animated)
After push operation call method [self.navigationController.view layoutSubviews]; which lays out subviews.