【发布时间】:2016-11-03 20:51:07
【问题描述】:
我有两个按钮,每按一下,就会出现一个UIImagePickerController。
我可以很好地选择和检索照片。但是,我想根据哪个按钮启动操作来做一些不同的事情。
有没有办法确定是哪个按钮导致最初的UIImagePickerController 出现在didFinishPickingImage 调用中?
【问题讨论】:
标签: ios objective-c uiimagepickercontroller
我有两个按钮,每按一下,就会出现一个UIImagePickerController。
我可以很好地选择和检索照片。但是,我想根据哪个按钮启动操作来做一些不同的事情。
有没有办法确定是哪个按钮导致最初的UIImagePickerController 出现在didFinishPickingImage 调用中?
【问题讨论】:
标签: ios objective-c uiimagepickercontroller
没有魔法。您需要以某种方式保存您的状态,并在调用委托方法时确定您的状态并采取相应措施。最简单的方法是向控制器添加属性或实例变量,并为每个按钮使用唯一值(例如枚举)对其进行更新。
【讨论】:
您可以为这两个按钮分配标签属性,然后在创建 UIImagePickerController 实例时,您可以将触摸按钮的按钮标签属性分配给 UIImagePickerController 实例的 picker.view.tag 属性。
然后在 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;
}
}
【讨论】: