Iphone 当我点击图像中的“完成”按钮时,是否会更改以前的UIviewController?

Iphone 当我点击图像中的“完成”按钮时,是否会更改以前的UIviewController?,iphone,uiimage,Iphone,Uiimage,当我点击图片时,我会在第一个屏幕上更改个人资料图片,它会进入下一个屏幕,在这个屏幕上,我会要求从gallery中选择或拍照。假设我从gallery中选择,它进入第二个屏幕,图像出现。我的问题是,当我在第二个屏幕上单击“完成”按钮时,图像将在第一个屏幕上更改,即配置文件图片。在第一个屏幕上如何更改,请回答我。在SecondViewController类中创建代理。在FirstViewController类中分配并实现此委托 当用户从gallery中选择图像或单击照片时,调用委托方法将所选图像传递给

当我点击图片时,我会在第一个屏幕上更改个人资料图片,它会进入下一个屏幕,在这个屏幕上,我会要求从gallery中选择或拍照。假设我从gallery中选择,它进入第二个屏幕,图像出现。我的问题是,当我在第二个屏幕上单击“完成”按钮时,图像将在第一个屏幕上更改,即配置文件图片。在第一个屏幕上如何更改,请回答我。

在SecondViewController类中创建代理。在FirstViewController类中分配并实现此委托

当用户从gallery中选择图像或单击照片时,调用委托方法将所选图像传递给FirstViewController类

实现此功能的示例代码如下所示

SecondViewController.h FirstViewController.h
为第二视图控制器中的图像选择创建代理,将其指定为第一视图控制器。当用户选择图像时,在代理回调中传递该图像。如何为图像创建代理?按下secondviewcontroller检查下面的答案。secondviewcontroller中有“完成”按钮。因此,我们可以弹出secondviewcontroller,它是否正确?如果您以模态方式呈现secondviewcontroller,那么这没关系!无需按下导航堆栈。不,当我单击SecondViewController中的“完成”按钮时,它将在FirstRviewController中更改,以便可以使用或不使用I popviewcontroller?此代码将在用户选择图像后立即将图像传递给firstViewcontroller。它不依赖于“完成”按钮单击。如果您希望这样做,则在完成时调用代理按钮,而不是单击。调用委托方法后,您可以弹出视图控制器。选中编辑的答案,我添加了代码以在“完成”按钮单击中调用委托。
// Declare delegate
@protocol ImageSelectionDelegate <NSObject>
- (void) imageSelected:(UIImage*)image;
@end

@interface SecondViewController : UIViewController
// Delegate property
@property (nonatomic,assign) id<ImageSelectionDelegate> delegate;
@end
@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
#import "SecondViewController.h"

@interface FirstViewController : UIViewController <ImageSelectionDelegate>

@end
@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