我使用以下代码来呈现视图控制器
ViewController *ViewController = [[ViewController alloc] init];
ViewController.modalPresentationStyle = UIModalPresentationFormSheet;
UINavigationController *navLayersViewController = [UINavigationController alloc] initWithRootViewController:ViewController];
[self presentViewController:navLayersViewController
animated:YES
completion:^{
}];
我想在其他一些类中获取这个预先设定的“viewController”的当前实例。我怎么能得到它。在此先感谢!
答案 0 :(得分:0)
您需要先显示导航控制器。
ViewController *myViewController = [[ViewController alloc] init];
myViewController.modalPresentationStyle = UIModalPresentationFormSheet;
UINavigationController *navLayersViewController = [UINavigationController alloc] initWithRootViewController:myViewController];
如果要在视图控制器类中演示,请执行
[self presentViewController: navLayersViewController animated:YES completion:nil];
否则获取根控制器的引用,然后执行
[rootController presentViewController: navLayersViewController animated:YES completion:nil];
答案 1 :(得分:0)
如果您需要两个视图控制器来了解彼此,那么您就会遇到架构问题。
通常,您的VC只处理视觉/ UI交互,如动画或按钮触摸。这些事情显然不需要超越VC(VC2并不关心VC1有淡入淡出动画或3个按钮)。
在显示数据时,数据来自外部类/服务/经理;人们称之为许多不同的东西。
但好消息是,如果那"服务"在你的控制器之外,你可以在任何地方使用它。
从VC1开始,您可以执行myService.GetListOfMessages();
(例如),并且没有什么能阻止您使用同一个服务从另一个类执行此操作。现在,您可以从VC1,VC2或任何必要的地方访问您的消息列表。
请记住,一般情况下,您的VC不应该做与视觉无关的任何事情。如果你正在进行webservice调用,业务逻辑或类似的东西,它属于另一个类。这样,它组织起来(这本身就足够了),但是,如果您的视觉效果发生变化,或者您需要在其他地方使用相同的逻辑,那么您已经准备好了这个课程。
这不是一个完整的例子,但是如果你在编程方面足够舒服,你应该很好地实现它。
小心点:
考虑到所有这些,你应该没问题,你的控制器实际上会处理更少的工作,同时仍然可以访问他们需要的数据。