关闭 UIImagePickerController 将 UITabBarController 重置为 0 索引 - iOS

Posted

技术标签:

【中文标题】关闭 UIImagePickerController 将 UITabBarController 重置为 0 索引 - iOS【英文标题】:Dismissing UIImagePickerController resets UITabBarController to 0 index - iOS 【发布时间】:2016-05-29 10:56:08 【问题描述】:

我的UITabBarController 中有 4 个选项卡,我在 tabBar 中的第 4 个 ViewController 中显示 UIImagePickerController。 (所有的tabs viewControllers都嵌入在UINavigationController中)

当我的UIImagePickerController 从我的第 4 个标签中消失时,无论是在选择图像之后还是只是取消选择器后,它都会带我回到我的第一个标签(0 索引)。

它应该保留在我的第 4 个选项卡视图控制器上。为什么会这样?我已经在代码中搜索了所有内容,没有提到我提到的tabBarController.setSelectedIndex = 0;

这是我呈现UIImagePickerController 并关闭它的代码:

- (void)takeNewPhotoFromCamera

    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])
    
        UIImagePickerController *controller = [[UIImagePickerController alloc] init];
        controller.sourceType = UIImagePickerControllerSourceTypeCamera;
        controller.allowsEditing = NO;
        //controller.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType: UIImagePickerControllerSourceTypeCamera];
        controller.delegate = self;
        [self presentViewController: controller animated: YES completion: nil];

    


- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker

    [picker dismissViewControllerAnimated:YES completion:nil];


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    [picker dismissModalViewControllerAnimated:YES];  

请帮忙。

谢谢!

【问题讨论】:

您是否尝试过从 tabbarcontroller 而不是嵌入式视图控制器呈现选择器? 你在哪里调用(void)takeNewPhotoFromCamera方法?来自tabBarController 或内部yourViewController @BJHStudios 是的。尝试从 tabBarController 呈现选择器,并在解雇后出现同样的问题。 @matiboo 我在我的viewController 中调用它,它连接到我的tabBarController 中的第四个选项卡 抱歉,我不知道您的信息为何会出现这种情况。 【参考方案1】:

刚刚通过将图像选择器的modalPresentationStyle 设置为OverCurrentContext 找到了解决方案:

UIImagePickerController *controller = [[UIImagePickerController alloc] init];
controller.sourceType = UIImagePickerControllerSourceTypeCamera;
controller.allowsEditing = NO;
controller.delegate = self;
controller.modalPresentationStyle = UIModalPresentationOverCurrentContext; //This is the magical line
[self presentViewController: controller animated: YES completion: nil];

【讨论】:

以上是关于关闭 UIImagePickerController 将 UITabBarController 重置为 0 索引 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

ViewController 生命周期 UINavigationController

如何从 webview 使用 UIImagePickerController

iPhone OS 3.0 中的 UIImagePickerController

iOS开发——打开手机相册,获取图片

如何使用 iphone 中的核心数据将图像存储到 sqlite? [复制]

JFrame关闭方法的问题