Without seeing more of the surrounding code I can't give a definite answer, but I have two theories.
You're not using UIViewController
's designated initializer initWithNibName:bundle:
. Try using it instead of just init
.
Also, self
may be one of the tab bar controller's view controllers. Always present view controllers from the topmost view controller, which means in this case ask the tab bar controller to present the overlay view controller on behalf of the view controller. You can still keep any callback delegates to the real view controller, but you must have the tab bar controller present and dismiss.