如何在基于tabBar的应用程序中使用UIImagePickerController?

时间:2012-10-15 04:56:49

标签: iphone objective-c ios uitabbarcontroller uiimagepickercontroller

enter image description here我正在制作一个基于tabBar和navigationBar的应用程序。在它上面我点击它时有一个按钮然后在UIImagePickerControllerSourceTypePhotoLibrary的帮助下我打开了图像库但是imagePicker默认后退按钮,取消按钮未显示在视图上。就像我使用UIImagePickerControllerSourceTypeCamera然后相机窗口打开但我无法看到单击按钮来捕获图像,因为它将被tabBar隐藏。所以请帮我解决这个问题。这是图片的截图。

6 个答案:

答案 0 :(得分:7)

您可以在TabbarController上显示图像选择器(从AppDelegate获取它或在其中实现它),而不是像这样的视图控制器:

  YourAppDelegate* appDel = (YourAppDelegate*)[[UIApplication sharedApplication] delegate];

[appDel.tabBarController presentModalViewController:picker animated:YES];

注意:来自 ios 6 presentModalViewController:animated:已弃用并替换为 presentViewController:animated:completion

答案 1 :(得分:2)

如果项目在故事板中,您将没有对它的引用(您在代码中创建的)。

相反,只需爬上视图层次结构并以此方式抓取标签视图控制器。

UITabBarController * tabBarController = (UITabBarController*)self.parentViewController;
[tabBarController presentViewController:picker animated:YES completion:^(void){

}];

然而,如果你在视线中出现,你将不得不处理在解雇后回来的相机。 (做一些状态以防止或不在那里。)

我知道这是一个古老的问题,但我认为它会帮助人们度过一段美好的时光,因为这对我有用。

答案 2 :(得分:0)

对我来说,这一行解决了这个问题,而pickercontroller位于Tab栏上方

picker.modalPresentationStyle = .custom;

答案 3 :(得分:0)

您可以使用shouldSelectViewController的{​​{1}}方法来完成以下操作:

UITabBarControllerDelegate

}

答案 4 :(得分:-1)

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self; 
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        picker.wantsFullScreenLayout = YES;

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{

        showImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
        }

答案 5 :(得分:-2)

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.wantsFullScreenLayout = YES;

    picker.showsCameraControls = YES;
     picker.navigationBarHidden = NO; 
     picker.toolbarHidden = NO;
    picker.allowsEditing=NO;

    [self presentModalViewController:picker animated:YES];