根控制器如何调用其子控制器中的方法,反之亦然?

How can a root controller call methods in its child controller and vice versa?

我有 2 个视图控制器。

Root -> (modal) -> Child

root 有定时器之类的东西。当计时器 子控制器在视图中时,我希望我的根控制器调用子控制器上的方法。

此外,当子控制器在视图中并且用户按下按钮时,我希望它调用根控制器中的方法。

在不引起内存问题的情况下执行此操作的最佳方法是什么?通知?我应该设置对子控制器的引用,反之亦然吗?

他们 相互引用。这完全取决于视图控制器层次结构/架构,但该层次结构始终是已知的,并且总有一种方法可以将它从一个视图控制器转移到另一个视图控制器。这只是了解您自己的体系结构并研究 UIViewController class 上的文档并思考它告诉您的内容的问题。例如,在模态表示中,它们通常是彼此的 presentingViewControllerpresentedViewController.

假设有 2 个这样的视图控制器:

TIMEXMainViewController *mainViewController = [TIMEXMainViewController new];

TIMEXChildViewController *childViewController = [TIMEXChildViewController new];

TIMEXMainViewController.m中访问child:

TIMEXChildViewController *childViewController = (TIMEXChildViewController *)self.presentedViewController;
[childViewController publicMethod];

TIMEXChildViewController.m中访问主要是:

TIMEXMainViewController *mainViewController = (TIMEXMainViewController *)self.presentingViewController;
[mainViewController publicMethod];

当然记得在你的实现文件中#import "TIMEX(Main/Child)ViewController.h"