1

我正在尝试将 prepareForSegue 与使用 UIImagePickerController 从相机胶卷或相机拍摄的图像一起使用。这就是我现在所拥有的,我不知道如何完成它,我希望你能帮助我

视图控制器.h

    @interface ViewController : UIViewController
<UIImagePickerControllerDelegate, UINavigationControllerDelegate>

-(IBAction)escoger:(id)sender;
-(IBAction)camara:(id)sender;
@property(strong,nonatomic) UIImagePickerController *imagepicker;
@property(strong,nonatomic)IBOutlet UIImageView *image;

视图控制器.m

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{


    if ([segue.identifier isEqualToString:@"escoger"]) {

        //UIImagePickerController *intro = [UIImagePickerController  ]

        imagepicker = [[UIImagePickerController alloc]init];

        imagepicker.delegate = self;

        imagepicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;


        [self presentViewController:imagepicker animated:YES completion:nil];

}}
4

3 回答 3

2

你不能在里面显示图像选择器prepareForSegue。如果您想实际使用已拍摄的照片,则不是。您需要做的是重新连接,以便当前触发 segue 的操作改为打开图像选择器。然后,在您的选择器委托中didFinishPickingMediaWithInfo,您手动触发 segue ( performSegueWithIdentifier:sender:)

于 2012-12-04T22:45:07.887 回答
1

好吧,如果您将 UIImagePickerController 与故事板一起使用,这相对简单。只需在故事板中创建一个新的视图控制器并添加一个 segue。然后在身份检查器中将 viewcontroller 类设置为 UIImagePickerController。

在此处输入图像描述

然后实现 prepareForSegue: 方法并将源设置为相机;

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    UIImagePickerController *controller = [segue destinationViewController];
    controller.sourceType = UIImagePickerControllerSourceTypeCamera;   
}

这就像一个魅力。

于 2012-12-04T23:20:01.013 回答
0

我不建议这样做。本质上,您是在尝试使用 segue 来做其他事情(但不执行实际的 segue)。相反,将您的按钮或其他任何东西连接到IBAction,因此它会导致图像选择器出现,然后,当实际想要执行 segue 时,调用

 [self performSegueWithIdentifier:@"escoger" sender:self];

[更新] 回应您的评论。您需要做几件事来完成这项工作:

1) 从情节提要中删除 segue

2)通过从视图控制器而不是按钮拖动来创建另一个segue 。这将在两个视图控制器之间创建一个 segue,但它不会附加到任何按钮。

3)在IB中为你的按钮创建一个IBAction方法(一个教程

4)在该方法中,显示您的图像选择器

5)当您从图像选择器返回时,在代码中执行segue(通过调用performSegueWithIdentifier)。6) 现在,您可以在 prepareForSegue方法中将图像传递给目标视图控制器。

于 2012-12-04T22:47:41.887 回答