私はいくつかのボタンを持っています。いずれかのボタンを押すとポップアップし、alertView がユーザーに写真を撮るか、カメラ ロールから選択するように求めます。今私が抱えている問題は、12 個のボタンと 12 個の UIImageView があることです。すべてのボタンには、アラートをポップし、ユーザーがいずれかのオプションを選択できるようにする独自のアクションがあります。didFinishPickingMediaWithInfo メソッドで、カメラまたはカメラ ロールから最初の imageView に画像を渡します。これはすべて正常に動作しますが、別のタグで別のアラートを発生させるボタン 2 を選択したい場合は、imageView 2 などを設定します (imageView1 を置き換えません)。アラートをポップしたボタンの選択に基づいて、どの imageView を設定するかを didFinishPickingMediaWithInfo で区別する方法が必要です。
ボタンのアクションは次のとおりです。
-(IBAction) addPhoto1:(id) sender {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Image Source" message:@"Take a photo or select a previously taken photo" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Take Photo", @"Select Photo", nil];
[alert show];
alert.tag = 101;
[alert release];
}
そしてアラートclickedButtonAtIndex
:
- (void)alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alert.tag == 101) {
if (buttonIndex == 1) {
//Take photo
[self performSelector:@selector(takePicture:) withObject:nil afterDelay:0.0];
}
else if (buttonIndex == 2){
//Camera roll
[self performSelector:@selector(pictureAlbum:) withObject:nil afterDelay:0.0];
}
else if (buttonIndex == 0) {
NSLog(@"Cancel");
}
}
}
そして、ここにありますdidFinishPickingMediaWithInfo
:
-(void) imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageToSavedPhotosAlbum:[image CGImage] metadata:dict completionBlock:nil];
if (addFirstImage.tag == 1001) {
firstImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
firstImage.layer.cornerRadius = 5;
firstImage.layer.masksToBounds = YES;
}
if (addSecondImage.tag == 1002) {
secondImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
secondImage.layer.cornerRadius = 5;
secondImage.layer.masksToBounds = YES;
}
}
}
明らかに、最初に押されたアラートのボタンに基づいて正しい imageViews 画像を設定する最良の方法は何ですか? (addFirstImage と addSecondImage はどちらも IB 経由でリンクされたボタンです)
どうもありがとう