根据激活 UIImagePickerController 的按钮执行不同的功能

Perform different function based on button that activates UIImagePickerController

我有两个按钮,当每个按钮都被按下时,会出现一个UIImagePickerController

我可以 select 检索照片。但是,我想根据启动操作的按钮做一些不同的事情。

有没有办法确定哪个按钮导致初始 UIImagePickerController 出现在 didFinishPickingImage 调用中?

没有魔法。您需要以某种方式保存您的状态,并在调用委托方法时确定您的状态并采取相应的行动。最简单的方法是向您的控制器添加一个 属性 或实例变量,并为每个按钮使用唯一值(例如枚举)更新它。

您可以为两个按钮分配标签 属性,然后当您创建 UIImagePickerController 实例时,您可以为被触摸的按钮分配按钮标签 属性 picker.view.tag 属性 的 UIImagePickerController 实例。

然后在 UIImagePickerController 的委托回调中,您可以检查选择器的 view.tag 属性 以确定在创建 uiimagepickercontroller

时触摸了哪个按钮
mybutton.tag = 100;
[myButton addTarget:self action:@selector(displayTheUIImagePickerController:)     forControlEvents:UIControlEventTouchUpInside];



-(void)displayTheUIImagePickerController:(id)sender
{
    NSInteger buttonTag = [sender tag];

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.view.tag = buttonTag;

//Finish setting up picker controller and then present
}



- (void)imagePickerController: (UIImagePickerController *)picker
    didFinishPickingImage: (UIImage *)i
              editingInfo: (NSDictionary *)editingInfo {

    NSInteger buttonTag = picker.view.tag;


    switch (buttonTag) {
        case 100:
            //Do something for button with tag 100
            break;

        case 101:
            //Do something for button with tag 101
            break;

        default:
            break;
    }

}