Objective c 带3个按钮的UIImagePickerController

Objective c 带3个按钮的UIImagePickerController,objective-c,ios7,uiimagepickercontroller,Objective C,Ios7,Uiimagepickercontroller,我有3个按钮可以启动相机。选择“使用照片”后,每个人都应将图像选择器的图像作为背景。然而,我无法让它正常工作。我可以让第一个和最后一个使用图像,或者所有人都可以拍摄图像,但只有第一个的背景改变。我包括我现在所拥有的,谢谢你的帮助 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSString *media

我有3个按钮可以启动相机。选择“使用照片”后,每个人都应将图像选择器的图像作为背景。然而,我无法让它正常工作。我可以让第一个和最后一个使用图像,或者所有人都可以拍摄图像,但只有第一个的背景改变。我包括我现在所拥有的,谢谢你的帮助

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSString *mediaType = info[UIImagePickerControllerMediaType];

    [self dismissViewControllerAnimated:YES completion:nil];

    if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
        UIImage *image = info[UIImagePickerControllerOriginalImage];

        _imageView.image = image;
        if (_newMedia)
            UIImageWriteToSavedPhotosAlbum(image,
                                           self,
                                           @selector(image:finishedSavingWithError:contextInfo:),
                                           nil);
        self.camera1.tag = 1;
        self.camera2.tag = 1;
        self.camera3.tag = 1;

        if ([self.camera1 isEqual:self.camera1]) {          
            [self.camera1 setBackgroundImage:image forState:UIControlStateNormal];
            [self.camera1 setTitle:@"" forState:UIControlStateNormal];
            [self.camera1 setImage:nil forState:UIControlStateNormal];
            self.camera1.tag++;


        } else if ([self.camera2 isEqual:self.camera2]) {
            [self.camera2 setBackgroundImage:image forState:UIControlStateNormal];
            [self.camera2 setTitle:@"" forState:UIControlStateNormal];
            [self.camera2 setImage:nil forState:UIControlStateNormal];

        } else if([self.camera3 isEqual:self.camera3]) {
            [self.self.camera3 setBackgroundImage:image forState:UIControlStateNormal];
            [self.self.camera3 setTitle:@"" forState:UIControlStateNormal];
            [self.self.camera3 setImage:nil forState:UIControlStateNormal];

        }
    }
    else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
    {
        // not using video...don't need anything here
    }
}

-(void)useCamera:(id)sender {

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentViewController:picker animated:YES completion:nil];
}
哦,好吧,只要做:

[self.activeButton setImage:[info objectForKey:UIImagePickerControllerOriginalImage]] 
内部
didfishpacking
方法。在此之前,您应该添加一个UIButton*activeButton变量,该变量在用户每次点击按钮时设置(例如,它可以是iAction)


另外,如果您使用IBOutlets连接了UIButton的插座,请确保您连接了UIButton的插座。

共有3个按钮,按下时,一个按钮将启动摄像头。我想使用相机拍摄的照片,并将其作为按下按钮的背景图像。现在,我可以让它做背景图像的变化,但不与相关的按钮。我使用了self.button.tag==1或其他条件。我似乎无法向它展示如果按下此按钮,如何将它拍摄的照片作为背景图像。哦,好的,在didfishpacking方法中执行:[self.activeButton setImage:[info objectForKey:UIImagePickerControllerOriginalImage]]。在此之前,您应该添加一个UIButton*activeButton变量,该变量在用户每次点击按钮时设置(例如,它可以是iAction)。尝试这样做时,甚至添加了一个BOOL,但仍然无法使其工作。我的IB上已经有3个按钮,它们与启动相机的方法和通常的要求相关联。你是否验证了图像中确实有数据,这不是零?如果是这样的话,那么下一步将是确保您的按钮变量实际连接到屏幕上显示的内容-它们是IBOutlets,还是您只是通过编程方式创建的?在任何情况下,调试这将对您非常有帮助,并且您可能能够非常快速地找到解决方案。因此,在useCamera函数中,我创建了一个按钮并将其指定为“sender”。然后,在具有属性的活动按钮上,将其设置为[NSNumber numberWithInt:button.tag];(xcode对此表示不满,但它是有效的)然后在didFinishPicking中,给按钮一个从0开始的标签,效果很好。谢谢你的帮助,罗伊!!你给我指明了正确的方向。