尝试显示从一个viewController捕获的UIImage,并在iOS中显示另一个

时间:2013-08-27 15:41:45

标签: ios uiviewcontroller uiimage xib

我有一个我正在处理的iPad应用程序,从我的主viewController(称之为mainViewController),我调用并显示另一个从.xib文件创建的viewController(称之为nextViewController)。第二个viewController允许用户捕获如下图像:

- (IBAction)imageCapture:(id)sender {

    _myImage = [_nextView captureImage];
    UIImageWriteToSavedPhotosAlbum(_myImage, nil, nil, nil);
    [self dismissViewControllerAnimated:YES completion:nil];

}

捕获此图像后,我现在需要将此图像传递回调用viewController(mainViewController),但老实说我不知道​​该怎么做。我试图在我的nextViewController中创建我的mainViewController的属性引用,我试图将新获取的图像的引用传递给mainController的属性,但这不起作用。

感谢所有回复的人。

2 个答案:

答案 0 :(得分:1)

要有效地执行此操作,您应该在显示的视图控制器中创建属性mainViewController。这会导致可重用性问题,加上紧密耦合这是不可取的。相反,正如上面的注释所述,您应该使用协议。对于Objective-C,请参阅this documentation以获取协议语法。

在NextViewController中,你应该创建一个这样的委托方法:

-(void)nextViewController:(NextViewController *)nextViewController capturedImage:(UIImage *)image;

然后,在主视图控制器类中,您应该实现此方法并对图像执行任何操作。值得注意的是,您可能希望从主视图控制器中关闭控制器。在创建时,不要忘记设置下一个视图控制器的委托属性。

我希望这能澄清你的问题!

答案 1 :(得分:0)

首先,您应该在secondViewController中创建一个属性,以便在呈现secondViewController之前将mainViewController传递给它。例如:

_secondViewController.mainViewController = self;

其次,您需要mainViewController中的属性才能从secondViewController传回图像。例如:

self.mainViewController.capturedImage = _myImage;

希望这会对你有帮助。