I think your presentation is reset by a topic didReceiveMemoryWarningthat is triggered by a resource-intensive camera. You can force the simulator to generate a memory warning without a camera to test this theory.
Generally speaking, viewDidLoad should be able to handle calls several times. This is not a method init. It is called again if self.viewset to nil and needs to be recreated later. It may be a more appropriate place to host any code that you have there, which causes problems, but the methods initare complicated because the designated initializer bypasses the nib load.
nib initWithCoder, init, , dearchiving . , , loadView, , , , . - initWithCoder, , args super, , , . , , , , , .