2

UIImagePickerControllers (カメラとメディア ピッカーの両方) を表示するために使用するボタンがいくつかあるビューがあります。UIImagePickerControllers を作成するとき、以下のコードでわかるように、それらに異なる名前を付けてモーダリで表示します。

- (void) startMediaBrowserFromViewControllerForBGImage {
    UIImagePickerController * mediaUIForBGImage = [[UIImagePickerController alloc]init];
    //i also set a bunch of different settings here, but it doesn't matter for this purpose
    mediaUIForBGImage.delegate = self;
    [self presentModalViewController: mediaUIForBGImage animated:YES];
}

コードでもわかるように、デリゲートを に設定しました。selfこれは、すべての UIImagePickerControllers で行うことですが、問題は、デリゲート メソッドで、どの UIImagePickerController がデリゲート メソッドを呼び出したかをどのように知るかです。メディアで実行する必要があるアクションは、UIImagePickerControllers ごとに異なるためです。デリゲート メソッドではUIImagePickerControllerパラメーターを取得しますが、常にメソッド (ピッカー) から割り当てられた名前を持ちます。どの UIImagePickerController を参照するかを知るために何を使用できますか?

4

3 に答える 3

2

あなたのための1つの解決策はこれかもしれません:

さまざまなピッカーの " " 値を設定するtagと、デリゲート メソッドに送信されるパラメーターの 1 つに、デリゲート メソッドを起動させたピッカーが含まれます。その " tag" 値を見れば、どのピッカーかがわかります。ピッカーでした。

別の解決策として、各ピッカーを ivar またはプロパティに設定し、デリゲート メソッドに送信されたピッカー パラメーターを比較して、どれがどの ivar またはプロパティに等しいかを確認します (つまり、オブジェクトのアドレスは同じですか?)。

于 2012-09-08T07:37:32.773 に答える
2

各ピッカーへの参照を保存して、それが同じインスタンスかどうかを確認できると思います。複数の異なるピッカー インスタンスを使用することについて質問したいのですが、単一のピッカー インスタンスのみを構成できますか? また、どの構成でもほぼ同じ結果が返されるため、特定のニーズに合わせて結果ディクショナリを調査できます。

self.oneImagePicker = [UIImagePickerController ...]
self.twoImagePicker = [UIImagePickerController ...]

//In delegate
if ([self.oneImagePicker isEqual:picker]) ...
于 2012-09-08T07:40:47.610 に答える