【问题标题】:iOS7 Storyboard image picker not working :(iOS7故事板图像选择器不工作:(
【发布时间】:2014-02-04 09:14:45
【问题描述】:

我正在尝试使用情节提要在新的 iOS7 Xcode 项目中设置imagePicker,但在找到以下代码之前似乎无法在线找到任何示例。

我已对其进行了设置,以便在按下按钮时使用模态推送来导航到具有"UIImagePickerController" 类的视图,该类显然调用了图像选择器代码。

但是,当应用程序运行时,点击允许应用程序访问您的照片后,它不会加载任何内容,请问有什么帮助吗?

抓屏错误: https://pbs.twimg.com/media/Bdy7v9JCAAABpvS.jpg:large

界面设置:

@interface ridecount_AddRide_ViewController : UIViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate>{

代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    UIImagePickerController *controller = [segue destinationViewController];
    controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    controller.delegate = self;
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
    [self dismissViewControllerAnimated:YES completion:nil];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    [self dismissViewControllerAnimated:YES completion:nil];
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [[self.view viewWithTag:100023] removeFromSuperview];
    UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(320/2-200/2, 10, 100, 100)];
    imageView.tag = 100023;
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    imageView.image = image;
    [self.view addSubview:imageView];
}

【问题讨论】:

    标签: ios objective-c image storyboard segue


    【解决方案1】:

    初始化控制器UIImagePickerController *controller = [[segue destinationViewController] init];

    【讨论】:

    • 为什么故事板没有初始化视图控制器?这不是奇怪的行为吗?不过谢谢!它有效:)
    • 谢谢,您的 [[segue destinationViewController] init] 方法使我免于使用丑陋的 void segue 解决方法
    • @AvnerBarr 真实的是情节提要使用initWithCoder: 方法初始化destinationViewController。当UIImagePickerController 使用init 方法以编程方式(不是从情节提要)初始化时,与initWithCoder: 方法相比,它可能会产生一些额外的东西。这就是为什么它不能完全使用情节提要。我不建议在prepareForSegue 正文中再执行一次init... 方法。对象不应被多次初始化。请使用替代解决方案检查我的答案。
    【解决方案2】:

    对于 SWIFT - 有点不同的方法

    //Init property
    var imagePicker = UIImagePickerController()
    

    然后分配

    override func prepareForSegue(segue:UIStoryboardSegue!, sender: AnyObject!)
    {
        imagePicker = segue.destinationViewController as UIImagePickerController
        imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
        imagePicker.allowsEditing = false
        imagePicker.delegate = self
    }
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。仅当 availableMediaTypesForSourceType 设置为 UIImagePickerControllerSourceTypeCamera 时,从情节提要初始化的 UIImagePickerController 对象才能正常工作。

      如果您想保留 prepareForSegue: 功能,您可以从情节提要中删除 UIImagePickerController 并使用以下代码以编程方式创建它:

      - (void)showCameraRollController
      {
          UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
          UIStoryboardSegue *segue = [UIStoryboardSegue segueWithIdentifier:@"CameraRollController" source:self destination:imagePickerController performHandler:^{
              [self presentViewController:imagePickerController animated:YES completion:NULL];
          }];
          [self prepareForSegue:segue sender:self];
          [segue perform];
      }
      
      - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
      {
          if ([segue.identifier isEqualToString:@"CameraRollController"]) {
              UIImagePickerController *imagePickerController = [segue destinationViewController];
              imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
              imagePickerController.delegate = self;
          }
      }
      

      【讨论】:

        【解决方案4】:

        可能,另一种选择是将 UIImagePickerController 子类化并添加到子类中:

        - (instancetype)initWithCoder:(NSCoder *)aDecoder { return [super init]; }

        它似乎奏效了。

        【讨论】:

          猜你喜欢
          • 2014-04-09
          • 1970-01-01
          • 1970-01-01
          • 2023-04-06
          • 2015-03-09
          • 1970-01-01
          • 2014-09-12
          • 1970-01-01
          • 2014-02-23
          相关资源
          最近更新 更多