When use UIImagePickerController, it inherit form UINavigationController. Caller may use UIImagePickerController's delegate to fetch image, however your code reset it's delegate in method - (void)safePushViewController:(UIViewController *)viewController animated:(BOOL)animated. So UIImagePickerController's delegate methods had no chance to be called. (Forgive my poor English)
When use UIImagePickerController, it inherit form UINavigationController. Caller may use UIImagePickerController's delegate to fetch image, however your code reset it's delegate in method - (void)safePushViewController:(UIViewController *)viewController animated:(BOOL)animated. So UIImagePickerController's delegate methods had no chance to be called. (Forgive my poor English)