如何找到故事板制作的视图控制器实例

Posted

技术标签:

【中文标题】如何找到故事板制作的视图控制器实例【英文标题】:How to find Instance of View Controller made by storyboard 【发布时间】:2015-04-15 01:19:41 【问题描述】:

我正在尝试在 Xcode 中创建一个选项卡式应用程序,允许用户拍照并在 FirstViewController 类上对其进行编辑,并在完成后将其显示在 SecondViewController 上。

当我开始项目时,Xcode 自动在故事板中为我制作了两个 viewController。我现在需要的是找到生成的第二个 viewController 的实例,这样我就可以调用一个方法并将一个参数(UIImage)从第一个视图控制器传递给第二个,就像这样。

FirstViewContoller.m

-(void) passImageToSecondVC (UIImage *) img 

    [<instanceOf_SecondViewController> receiveImg: img]; 

SecondViewContoller.m

-(void) receiveImage (UIImage *) img 

    //Code to display the image received 

我要问的是如何找到由 Xcode 生成的 SecondViewController 实例的名称(在示例代码中由 显示),以便我可以调用此方法。

虽然我非常接近以编程方式执行此操作,但我发现它更容易我想通过情节提要学习如何执行此操作,我也很乐意听到解决此问题的其他解决方案。谢谢!

【问题讨论】:

为什么不将图像保存到临时文件中,并有保存此路径的模型?而不是整个应用程序都可以访问它。 【参考方案1】:

没有办法通过故事板做到这一点。您不能通过名称访问视图控制器。每个视图控制器都可以通过 self.tabBarController 访问标签栏控制器。您可以从标签栏控制器的 viewControllers 数组中访问各个控制器。因此,要在第二个选项卡中获取对控制器的引用,您可以使用 self.tabBarController.viewControllers[1]。

【讨论】:

【参考方案2】:

使用委托模式。 使一个 vc 成为另一个 vc 的委托,并在它们之间进行数据通信。我认为这是一个常见的场景。 https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

【讨论】:

以上是关于如何找到故事板制作的视图控制器实例的主要内容,如果未能解决你的问题,请参考以下文章

如何制作没有 xib 或故事板 vc 标识符的视图控制器?

如何使用没有选项卡或导航控制器的故事板从 AppDelegate 实例化不同的视图?

故事板视图控制器未实例化?

故事板中视图控制器之间的共享实例

故事板:如何使用故事板为 UIPageViewController 设置初始视图控制器?

故事板例外 - 故事板不包含带有标识符的视图控制器