rkb
rkb

Reputation: 11231

How to use UIImagePickerController along with UITabBar in iPhone

I am using TabBarController in my application. In one of the view of the tabbar I am using a UIImagePickerController to pick an image.

When I add the picker as follows

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

imagePicker.delegate = self;

imagePicker.editing = YES;

[self presentModalViewController:imagePicker animated:YES];
[imagePicker release];

It adds the picker, But at the time of choosing the photo, The bottom bar having the buttons "choose" and "cancel" gets hide under my tabbar. How to resolve this .

Upvotes: 1

Views: 3293

Answers (3)

ideerge
ideerge

Reputation: 419

This works for me:

picker.delegate = currentClassViewController;

[tabBarController presentModalViewController:picker animated:YES];

Have your picker-caller class own or have access to your UITabController variable and presentModalViewController against your tabBarController.

Upvotes: 1

Janusz
Janusz

Reputation: 189534

The problem is that you are using self as the navigation controller that shows the modal screen. Therefore the tab bar navigation controller does not know that a modal screen should fill the whole screen. Since the UIImagePickerController can not adjust itself to a smaller size you have to use the tab bar navigation controller to open present the modal view.

I use the following code to show a UIImagePickerController from a navigation controller that is shown inside a tabbar:

[self.navigationController presentModalViewController:picker animated:YES];

using self.navigationController instead of self as the object that presents the UIImagePickerController did the trick for me.

Upvotes: 1

pix0r
pix0r

Reputation: 31290

I haven't seen this problem - I have an app that uses a UITabBar and a UIImagePickerController together, and the tab bar does not obscure the image picker.

Inside my view controller, which is one of the UITabBar's view controllers, I'm creating the image picker as such:

self.imagePicker = [[[UIImagePickerController alloc] init] autorelease];
imagePicker.allowsImageEditing = NO;
imagePicker.delegate = self;
[self presentModalViewController:imagePicker animated:YES];

Seems very similar to your code, except that I'm setting the image picker as a retained property. Is your tab bar set up correctly? Is the view controller contained within the myTabBar.viewControllers array?

Upvotes: 0

Related Questions