0

我有一个我正在处理的 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 的属性,但这不起作用。

提前感谢所有回复的人。

4

2 回答 2

1

为了有效地做到这一点,你不应该mainViewController呈现的视图控制器中创建一个属性。这会导致可重用性问题,而且它的紧密耦合是不可取的。相反,正如上面的评论所指出的,您应该使用协议。对于 Objective-C,请参阅此文档以了解协议语法。

在您的 NextViewController 中,您应该创建一个如下所示的委托方法:

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

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

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

于 2013-08-27T16:01:00.687 回答
0

首先,您应该在出现 secondViewController 之前创建一个属性secondViewController以传递给您。mainViewController前任:

_secondViewController.mainViewController = self;

其次,您将需要一个属性mainViewController来将图像从secondViewController. 前任:

self.mainViewController.capturedImage = _myImage;

希望这会对您有所帮助。

于 2013-08-27T15:49:38.277 回答