0

我试图从另一个视图控制器调用一个方法,比如已经初始化的 HeyViewController。我将如何通过重新初始化该视图控制器的新实例来调用它的方法?

例如 HeyViewController *hey =[[HeyViewController alloc]init]; [嘿showMe];

不好,因为这会在视图控制器已经初始化时对其进行初始化。

所以,是的,我该怎么做?

编辑:

抱歉,不清楚。由于应用程序使用故事板的流程,有问题的视图控制器已在此视图控制器之前初始化。因此视图控制器正在运行,但该视图控制器的实例不在当前视图控制器中。

4

2 回答 2

1

您面临的问题是如何获得指向现有视图控制器的指针。为了回答这个问题,您需要考虑如何创建其他视图控制器。

你的视图控制器流程是什么?谁创建了您的“嘿”视图控制器?需要访问“嘿”视图控制器的视图控制器是否可以访问创建“嘿”视图控制器的视图控制器?

如果答案是肯定的,那么让创建“嘿”视图控制器的视图控制器在它的 prepareForSegue 方法中保存一个指向它的指针。然后在需要时向创建视图控制器询问指向“嘿”视图控制器的指针。

如果您的第三个视图控制器无法访问“嘿”视图控制器的创建者,那么您的“嘿”视图控制器是否只有 1 个实例?

如果你可以确定你只会有一个“Hey”视图控制器的实例,那么添加一个“currentHeyViewController”类方法到你的“Hey”视图控制器。将私有全局“gCurrentHeyVC”添加到“Hey”VC 的标头。在 currentHeyViewController 类方法中返回全局值。在您的 init 方法中设置全局,并在您的 dealloc 方法中设置全局。

编辑:正如@gWiz 在下面指出的,上面的最后一个选项是对如何将“Hey”视图控制器变成单例的快速描述。

于 2013-09-24T00:22:30.227 回答
1

只需在您已经实例化的任何 HeyViewController 实例上调用 showMe。

于 2013-09-23T23:52:37.967 回答