Iphone 当我点击图像中的“完成”按钮时,是否会更改以前的UIviewController?
当我点击图片时,我会在第一个屏幕上更改个人资料图片,它会进入下一个屏幕,在这个屏幕上,我会要求从gallery中选择或拍照。假设我从gallery中选择,它进入第二个屏幕,图像出现。我的问题是,当我在第二个屏幕上单击“完成”按钮时,图像将在第一个屏幕上更改,即配置文件图片。在第一个屏幕上如何更改,请回答我。在SecondViewController类中创建代理。在FirstViewController类中分配并实现此委托 当用户从gallery中选择图像或单击照片时,调用委托方法将所选图像传递给FirstViewController类 实现此功能的示例代码如下所示 SecondViewController.h FirstViewController.hIphone 当我点击图像中的“完成”按钮时,是否会更改以前的UIviewController?,iphone,uiimage,Iphone,Uiimage,当我点击图片时,我会在第一个屏幕上更改个人资料图片,它会进入下一个屏幕,在这个屏幕上,我会要求从gallery中选择或拍照。假设我从gallery中选择,它进入第二个屏幕,图像出现。我的问题是,当我在第二个屏幕上单击“完成”按钮时,图像将在第一个屏幕上更改,即配置文件图片。在第一个屏幕上如何更改,请回答我。在SecondViewController类中创建代理。在FirstViewController类中分配并实现此委托 当用户从gallery中选择图像或单击照片时,调用委托方法将所选图像传递给
为第二视图控制器中的图像选择创建代理,将其指定为第一视图控制器。当用户选择图像时,在代理回调中传递该图像。如何为图像创建代理?按下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