【问题标题】:dismissViewControllerAnimated issue with navigation导航的dismissViewControllerAnimated问题
【发布时间】:2013-05-15 10:28:21
【问题描述】:

这是我的应用程序代码,我用它来选择图像选择器,当图像选择时我想关闭当前视图控制器,因为它在图像选择器本身关闭时不会从当前视图控制器中关闭,

 -(IBAction)selectExitingPicture
 {
      self.imagePicker = [[GKImagePicker alloc] init];
      self.imagePicker.cropSize = CGSizeMake(296, 300);
      self.imagePicker.delegate = self;
      self.imagePicker.resizeableCropArea = YES;
      [self presentViewController:self.imagePicker.imagePickerController animated:YES completion:nil];
 }
 -(void)imagePicker:(GKImagePicker *)imagePicker pickedImage:(UIImage *)image
 {
      appDel.im=image;
      [self hideImagePicker];
 }
 - (void)hideImagePicker
 {
      [self.imagePicker.imagePickerController dismissViewControllerAnimated:YES completion:^{
                            [self.navigationController pushViewController:viewCont animated:YES ];
                         }];
 }

请帮我解决这个问题,我应该进一步添加什么代码

【问题讨论】:

    标签: ios uinavigationcontroller presentmodalviewcontroller


    【解决方案1】:

    您应该使用这一行来关闭 PickerController :

    [self dismissViewControllerAnimated:YES completion:nil];
    

    您可以在两种委托方法中调用此行:

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

    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
    

    【讨论】:

    • 是的,我已经更新了,现在完成解雇后视图无法导航
    • 您是否还添加了代码以在关闭 pickerController 后推送新的 UIViewController?如果是,您也可以尝试使用 'performSelector:withObject:afterDelay' 推送它,延迟为 0.1f。
    • 你应该把所有更新的代码都放上,因为我已经测试过了,它工作得很好,即使没有 performSelector。
    • 好的,所以我看到您正在使用库 2 选择后裁剪您的图像。你应该按照这里的例子:github.com/gekitz/GKImagePicker/blob/master/GKImagePicker/… 然后如果你需要在裁剪后推送另一个 viewController,你必须这样做:- (void)imagePicker:(GKImagePicker *)imagePicker pickedImage:(UIImage *)image
    • 只有我通过调用[self hideImagePicker];来做到这一点
    【解决方案2】:

    .h 文件 整数标记;

    .m 文件

        viewDidLoad
         flg=0;
    
    
      -(void)viewWillAppear:(BOOL)animated {
          [super viewWillAppear:animated];
          if(flg==1) {
               [self dismissViewControllerAnimated:YES completion:nil];
                flg=0;
          }
      }
    
      - (void)hideImagePicker
       {
    
           [self.imagePicker.imagePickerController dismissViewControllerAnimated:YES completion:nil];
    
       }
    
      - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{
            self.imgView.image = image;
            flg=1; 
           [picker dismissViewControllerAnimated:YES completion:nil];
       }
    

    【讨论】:

    • 它不工作的伙伴,当我在图像选择器中取消时,应用程序崩溃了
    • 你必须为它设置取消方法。 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
    • [self presentViewController:self.imagePicker.imagePickerController animated:YES completion:nil]; 它是一个自定义类,因为该图像选择器通过 -(void)hideImagePicker 方法关闭
    • 查看我编辑的答案,你可以写 didFinishPickingImage: 方法
    • 设置 flg=0;在视图中会出现
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 2011-05-09
    • 1970-01-01
    • 2015-03-01
    相关资源
    最近更新 更多