1

画像をクリックするとプロフィール写真の最初の画面が変更され、次の画面に移動し、ギャラリーから選択するか写真を撮るかを尋ねます。ギャラリーから選択すると、2 番目の画面に入り、画像が表示されます。私の質問は、2 番目の画面で [完了] ボタンをクリックすると、最初の画面で画像が変化することです。つまり、プロフィール写真です。

4

1 に答える 1

0

SecondViewControllerクラスでデリゲートを作成します。FirstViewControllerこのデリゲートをクラスに割り当てて実装します。

ユーザーがギャラリーから画像を選択するか、写真をクリックすると、デリゲート メソッドを呼び出して、選択した画像をFirstViewControllerクラスに渡します。

これを実装するサンプルコードは次のとおりです

SecondViewController.h

// Declare delegate
@protocol ImageSelectionDelegate <NSObject>
- (void) imageSelected:(UIImage*)image;
@end

@interface SecondViewController : UIViewController
// Delegate property
@property (nonatomic,assign) id<ImageSelectionDelegate> delegate;
@end

SecondViewController.m

@implementation SecondViewController

// In case you are using image picker, this delegate is called once image selection is complete.
- (void)imagePickerController:(UIImagePickerController *)picker
                        didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    //Use either according to your setting, whether you allow image editing or not.
    UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
    //For edited image
    //UIImage *myImage = [info objectForKey:UIImagePickerControllerOriginalImage];
    if([_delegate respondsToSelector:@selector(imageSelected:)]) {
        [self.delegate imageSelected:myImage];
    }
}

//OR

// Done button click
- (IBAction)doneButtonClick:(id)sender
{
    // You can store the image selected by user in a UIImage pointer.
    // Here I have UIImage *selectedImage as an ivar.

    // Call the delegate and pass the selected image.
    if([_delegate respondsToSelector:@selector(imageSelected:)]) {
        [self.delegate imageSelected:selectedImage];
    }

    // Pop the view controller here
}

@end

FirstViewController.h

#import "SecondViewController.h"

@interface FirstViewController : UIViewController <ImageSelectionDelegate>

@end

FirstViewController.m

@implementation FirstViewController
- (void) onImageClick {
    SecondViewController *controller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    // Assign delegate
    controller.delegate = self;
    [self.navigationController pushViewController:controller animated:YES];
}

// Implement delegate method
- (void) imageSelected:(UIImage *)image {
    // Use image
}
@end
于 2013-06-20T12:58:31.753 に答える