0

ボタンをクリックして押したままにするジェスチャで、ユーザーがディスクに画像をアップロードできるようにする作業中のイメージピッカーがあり、ユーザーは同じジェスチャを使用して画像を変更できます。ただし、唯一の問題は、同じビューでこれを2回実行する必要があることです(つまり、2つのイメージビュー、各イメージビューを変更するための2つのボタンなどがあります)。仕事。これは基本的にビューがどのように見えるかです:

ここに画像の説明を入力

これが私の現在のコードです:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
//
// Saving into Documents folder
//
NSString* path = [NSHomeDirectory() stringByAppendingString:@"/Documents/first.png"];

BOOL ok = [[NSFileManager defaultManager] createFileAtPath:path
                                                  contents:nil attributes:nil];

if (!ok) {
    NSLog(@"Error creating file %@", path);
} else {
    NSFileHandle* myFileHandle = [NSFileHandle fileHandleForWritingAtPath:path];
    [myFileHandle writeData:UIImagePNGRepresentation(info [UIImagePickerControllerOriginalImage])];
    [myFileHandle closeFile];
}

//
// Loading from documents
//
NSFileHandle* myFileHandle = [NSFileHandle fileHandleForReadingAtPath:path];
UIImage* loadedImage = [UIImage imageWithData:[myFileHandle readDataToEndOfFile]];
self.chosenImage = loadedImage;
[self.imageView setImage:self.chosenImage];
[self dismissViewControllerAnimated:YES completion:nil];
}

- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[self dismissViewControllerAnimated:YES completion:nil];
}

- (void)onLongTile:(UILongPressGestureRecognizer *)gesture
{
switch ([gesture state]) {
    case UIGestureRecognizerStateBegan:{
        NSString *actionSheetTitle = @"Photo Options"; //Action Sheet Title
        NSString *type = @"Upload Photo";
        NSString *cancelTitle = @"Cancel";
        UIActionSheet *actionSheet = [[UIActionSheet alloc]
                                      initWithTitle:actionSheetTitle
                                      delegate:self
                                      cancelButtonTitle:cancelTitle
                                      destructiveButtonTitle:nil
                                      otherButtonTitles:type, nil];
        [actionSheet showInView:self.view];            }

}
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
NSString *buttonTitle = [actionSheet buttonTitleAtIndex:buttonIndex];
if  ([buttonTitle isEqualToString:@"Photo"]) {
    self.imagePicker = [[UIImagePickerController alloc] init];
    self.imagePicker.delegate = self;
    [self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    [self presentViewController:self.imagePicker animated:YES completion:nil];
}
}

タグ付きの更新されたコード:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{

if (self.imageViewOne.tag == 100)
{
    //
    // Saving into Documents folder
    //
    NSString* path = [NSHomeDirectory() stringByAppendingString:@"/Documents/one.png"];

    BOOL ok = [[NSFileManager defaultManager] createFileAtPath:path
                                                      contents:nil attributes:nil];

    if (!ok) {
        NSLog(@"Error creating file %@", path);
    } else {
        NSFileHandle* myFileHandle = [NSFileHandle fileHandleForWritingAtPath:path];
        [myFileHandle writeData:UIImagePNGRepresentation(info [UIImagePickerControllerOriginalImage])];
        [myFileHandle closeFile];
    }

    //
    // Loading from documents
    //
    NSFileHandle* myFileHandle = [NSFileHandle fileHandleForReadingAtPath:path];
    UIImage* loadedImage = [UIImage imageWithData:[myFileHandle readDataToEndOfFile]];
    self.chosenImageOne = loadedImage;
    [self.imageViewOne setImage:self.chosenImageOne];
    [self dismissViewControllerAnimated:YES completion:nil];
}
if (self.imageViewTwo.tag == 200)
{
    //
    // Saving into Documents folder
    //
    NSString* path = [NSHomeDirectory() stringByAppendingString:@"/Documents/two.png"];

    BOOL ok = [[NSFileManager defaultManager] createFileAtPath:path
                                                      contents:nil attributes:nil];

    if (!ok) {
        NSLog(@"Error creating file %@", path);
    } else {
        NSFileHandle* myFileHandle = [NSFileHandle fileHandleForWritingAtPath:path];
        [myFileHandle writeData:UIImagePNGRepresentation(info [UIImagePickerControllerOriginalImage])];
        [myFileHandle closeFile];
    }

    //
    // Loading from documents
    //
    NSFileHandle* myFileHandle = [NSFileHandle fileHandleForReadingAtPath:path];
    UIImage* loadedImage = [UIImage imageWithData:[myFileHandle readDataToEndOfFile]];
    self.chosenImageTwo = loadedImage;
    [self.imageViewTwo setImage:self.chosenImageTwo];
    [self dismissViewControllerAnimated:YES completion:nil];
}

}
4

1 に答える 1

0

私が質問について理解したことから、タグをあなたに設定し、UIImageViewそれに応じて変更してください。何かのようなもの:

[self.imageViewOne setTag:100];
[self.imageViewTne setTag:200];

そして、デリゲートでタグの値を確認し、必要なことを行うことができます:

if ( imageView.tag == 100)
{
    // Code for first imageView
}
于 2013-06-23T03:28:10.993 に答える