我有一个我正在处理的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的属性,但这不起作用。
感谢所有回复的人。
答案 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;
希望这会对你有帮助。