我正在尝试将prepareForSegue用于使用UIImagePickerController从相机胶卷或相机拍摄的图像。这就是我现在所拥有的,我不知道如何完成它,我希望你能帮助我
ViewController.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;
Viewcontroller.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];
}}
答案 0 :(得分:2)
您无法在prepareForSegue
中显示图像选择器。如果您想要实际使用已拍摄的照片,请不要这样做。您需要做的是重新布线,以便当前触发segue的操作会打开图像选择器。然后,在您的选择器代理didFinishPickingMediaWithInfo
中,您手动触发segue(performSegueWithIdentifier:sender:
)
答案 1 :(得分:1)
嗯,如果你将UIImagePickerController与故事板一起使用,这是相对简单的。只需在故事板中创建一个新的viewcontroller并添加一个segue。然后在身份检查器中将viewcontroller类设置为UIImagePickerController。
然后实现prepareForSegue:方法并将源设置为摄像机;
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
UIImagePickerController *controller = [segue destinationViewController];
controller.sourceType = UIImagePickerControllerSourceTypeCamera;
}
这就像一个魅力。
答案 2 :(得分:0)
我不建议这样做。从本质上讲,你试图使用segue做其他事情(但不要执行实际的segue)。相反,将您的按钮或其他任何内容连接到IBAction
,这会导致图像选择器出现,然后,当实际想要执行segue时,调用
[self performSegueWithIdentifier:@"escoger" sender:self];
[UPDATE] 回应你的评论。你需要做几件事来完成这项工作:
1)从故事板中删除segue
2)创建另一个segue 从视图控制器拖动,而不是从按钮拖动。这将在两个视图控制器之间创建一个segue,但它不会 附在任何按钮上。
3)为您创建一个IBAction方法 IB中的按钮(a tutorial)
4)在该方法中,显示您的图像 选择器
5)从图像选择器返回时,执行segue
在代码中(通过调用performSegueWithIdentifier
)。 6)现在,你可以
将图像传递给您的目标视图控制器
prepareForSegue
方法。