首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法立即呈现imagepicker

无法立即呈现imagepicker
EN

Stack Overflow用户
提问于 2015-01-10 03:25:44
回答 4查看 239关注 0票数 0

我有一个标签栏控制器,当我点击第三个标签栏按钮时,我会显示一个UIViewcontroller。在这个vc的viewWillAppear中,我展示了一个运行良好的UIImagepickerController。问题是当我打开视图时,我无法立即在屏幕上显示它。首先显示vc,0.4-0.5秒后显示图像拾取器。因此,我想首先介绍图像拾取器,然后在用户拍摄图像后显示vc。我也尝试从viewDidLoadviewWillAppear调用选择器,但是没有任何改变。

代码语言:javascript
复制
- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    if (imagePickerWasPresented == NO)
    {
        imagePickerWasPresented = YES;

        self.imagePicker = [[UIImagePickerController alloc] init];
        self.imagePicker.delegate = self;
        self.imagePicker.allowsEditing = YES;


        self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        self.imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];

        [self presentViewController:self.imagePicker animated:NO completion:nil];
    }
}

我是不是打错地方了?

EN

回答 4

Stack Overflow用户

发布于 2015-01-10 05:28:02

我也遇到了同样的问题--直接调用UIImagePicker,而不是先调用VC,再调用UIImagePicker。

拍摄完照片/视频后:

代码语言:javascript
复制
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {}

你将转到这个标准的委托方法,从这里调用VC。这样一来,你会立即转到ImagePicker,并且只有一个过渡,之后你会选择对所获取的内容做一些不那么令人沮丧/丑陋的事情。

票数 2
EN

Stack Overflow用户

发布于 2015-01-10 03:38:01

不,你在一个合适的地方调用它,这就是iOS如何做的;如果你把多个模态放在一起,一个接一个地呈现,包括动画。对您的问题有效的解决方案是提供UINavigationController而不是您的UIViewController。设置导航控制器,使viewcontroller作为根视图控制器,但也将imagepickercontroller推送到堆栈上。呈现这个navigationcontroller,它应该会直接转到imagepickercontroller。否则,尝试在动画设置为NO的情况下同时显示uiviewcontroller和imagepickercontroller,看看是否有效。

票数 1
EN

Stack Overflow用户

发布于 2015-01-10 04:36:21

试试这个,看看它能让你有多近,然后适应你的需求。当我对它进行快速测试时,它似乎做了您想要的事情。

代码语言:javascript
复制
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;

    UIViewController * vc = [[UIViewController alloc] init];

    vc.view.backgroundColor = [UIColor whiteColor];

    UINavigationController * navigationController = [[UINavigationController alloc] init];
    [navigationController pushViewController:vc animated:NO];


    UITabBarController * tabBarController = [[UITabBarController alloc] init];
    NSArray* controllers = [NSArray arrayWithObjects:navigationController, nil];
    tabBarController.viewControllers = controllers;

    tabBarController.delegate = self;

    UIImagePickerController *imagePicker =
    [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType =
    UIImagePickerControllerSourceTypePhotoLibrary;
    imagePicker.mediaTypes = [NSArray arrayWithObjects:
                          (NSString *) kUTTypeImage,
                          nil];
    imagePicker.allowsEditing = NO;

    self.window.rootViewController = tabBarController;

    [self.window makeKeyAndVisible];

    [vc presentViewController:imagePicker animated:NO completion:nil];

    return YES;

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27867738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档