我有2个视图控制器。
Root -> (modal) -> Child
root有定时器和东西。当计时器熄灭和子控制器在视图中时,我希望我的根控制器调用子控制器上的方法。
此外,当子控制器在视图中并且用户按下按钮时,我希望它在根控制器中调用方法。
在不造成内存问题的情况下,最好的方法是什么?通知?我应该设置对子控制器的引用,反之亦然?
答案 0 :(得分:2)
他们互相引用。这一切都取决于视图控制器层次结构/体系结构,但该层次结构始终是已知的,并且总有一种方法可以将它从一个视图控制器转移到另一个视图控制器这只是了解自己的架构和研究UIViewController类的文档并思考它告诉你什么的问题。例如,在模式演示中,它们通常是彼此的presentingViewController
和presentedViewController
。
答案 1 :(得分:1)
假设有两个这样的视图控制器:
TIMEXMainViewController *mainViewController = [TIMEXMainViewController new];
TIMEXChildViewController *childViewController = [TIMEXChildViewController new];
在TIMEXMainViewController.m
中访问孩子:
TIMEXChildViewController *childViewController = (TIMEXChildViewController *)self.presentedViewController;
[childViewController publicMethod];
在TIMEXChildViewController.m
中访问主要内容:
TIMEXMainViewController *mainViewController = (TIMEXMainViewController *)self.presentingViewController;
[mainViewController publicMethod];
当然记得你的实现文件中有#import "TIMEX(Main/Child)ViewController.h"
。