2016-11-03 3 views
0

2つのボタンがあり、それぞれを押すとUIImagePickerControllerが表示されます。UIImagePickerControllerをアクティブにするボタンに基づいて異なる機能を実行する

写真を選択して検索することができます。しかし、どのボタンがアクションを開始したかによって、何か違うことをしたい。

UIImagePickerControllerのどのボタンがdidFinishPickingImageコールに表示されるのかを判断する方法はありますか。

答えて

2

魔法はありません。何らかの理由で状態を保存する必要があり、デリゲートメソッドが呼び出されると、状態を判断してそれに応じて行動します。ここで最も簡単なのは、コントローラにプロパティまたはインスタンス変数を追加し、各ボタンの一意の値(enumなど)で更新することです。

0

両方のボタンにタグプロパティを割り当て、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; 
    } 

} 
+0

を作成する際に触れたボタンを決定するために、ピッカーのview.tagプロパティを確認することができます。これを達成するよりエレガントな方法があります。 –

関連する問題