2つのボタンがあり、それぞれを押すとUIImagePickerController
が表示されます。UIImagePickerControllerをアクティブにするボタンに基づいて異なる機能を実行する
写真を選択して検索することができます。しかし、どのボタンがアクションを開始したかによって、何か違うことをしたい。
UIImagePickerController
のどのボタンがdidFinishPickingImage
コールに表示されるのかを判断する方法はありますか。
2つのボタンがあり、それぞれを押すとUIImagePickerController
が表示されます。UIImagePickerControllerをアクティブにするボタンに基づいて異なる機能を実行する
写真を選択して検索することができます。しかし、どのボタンがアクションを開始したかによって、何か違うことをしたい。
UIImagePickerController
のどのボタンがdidFinishPickingImage
コールに表示されるのかを判断する方法はありますか。
魔法はありません。何らかの理由で状態を保存する必要があり、デリゲートメソッドが呼び出されると、状態を判断してそれに応じて行動します。ここで最も簡単なのは、コントローラにプロパティまたはインスタンス変数を追加し、各ボタンの一意の値(enumなど)で更新することです。
両方のボタンにタグプロパティを割り当て、UIImagePickerControllerインスタンスを作成するときに、UIImagePickerControllerインスタンスのpicker.view.tagプロパティに、タッチしたボタンのbuttonタグプロパティを割り当てることができます。
はその後戻ってUIImagePickerControllerのためのデリゲートの呼び出しで、あなたは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;
}
}
を作成する際に触れたボタンを決定するために、ピッカーのview.tagプロパティを確認することができます。これを達成するよりエレガントな方法があります。 –