IOS 查看代表以及何时调用它们

Posted

技术标签:

【中文标题】IOS 查看代表以及何时调用它们【英文标题】:IOS view delegates and when they are called 【发布时间】:2011-10-20 23:53:20 【问题描述】:

我有一个 iPhone 应用程序,它具有三个视图、一个切换器视图、一个数据采集视图和一个数据摘要视图。当应用程序启动时,切换器视图的 viewDidLoad 委托被调用,然后数据获取视图的 viewDidLoad 委托被调用 TWICE,接着是 viewWillDisappear 调用和数据获取视图的 dealloc。这两个调用都来自我的切换器视图中的同一行代码,也就是我为数据采集视图调用 insertSubView 时。一个调用来自 UIViewController,一个来自 UINib,它也被 UIViewController 调用。这有意义吗?

然后,当我接受用户输入来更改视图时,不会调用数据采集视图的 viewWillDisappear 委托。我刚刚收到数据摘要视图的 viewDidLoad 调用。

我很困惑。我正在尝试使用 viewWillDisappear 从数据采集视图中写出数据,然后可以将其读入数据摘要视图中,但是鉴于此顺序,它不起作用。

有什么想法吗?

【问题讨论】:

问题:1)您的三个视图是否使用单独的视图控制器? 2)采集视图的基本功能是什么,即网络访问或用户交互? 3)切换器视图首先在做什么? 是的,我有三个独立的视图控制器(一个切换视图控制器、一个带有许多按钮的数据采集视图控制器以从用户那里收集数据,以及一个报告数据的视图摘要控制器。切换器视图只是管理窗口底部的一个选项卡,用于在其他两个视图之间切换。 根据该评论更新了基于答案。 【参考方案1】:

解决您最后/主要关心的问题。 NO [DataAcquisitionView viewWillDisappear] 不是填充您的 SummaryView 的位置。当您完成数据加载后,您应该明确地创建您的 summaryView,然后用您需要总结的任何内容填充它的视图,然后呈现它。

根据您的新信息:

您想使用 tabBarController 委托方法;

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
    NSLog(@"Switch views");

这将告诉您我们用户选择了不同的 viewController 您可以处理该事件。

【讨论】:

谢谢,但我不明白你的回答。问题是何时触发从数据采集视图中写出数据,以便在该视图加载时可以将其读回数据摘要视图。如何知道数据采集视图即将消失?

以上是关于IOS 查看代表以及何时调用它们的主要内容,如果未能解决你的问题,请参考以下文章

iOS:在调用 view.hidden = NO 之后,有没有办法确定 UIView 何时出现

我可以有一个用于引用和指针的 ELI5 以及何时使用它们吗?

在 NextJS s-s-r 流程中何时以及如何调用 React 生命周期方法?

iOS 查看层级关系以及调用堆栈

您如何查看 Instruments 8.2 中何时释放内存

applicationWillTerminate 何时调用,何时不调用