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

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

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

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

有什么想法吗?

【问题讨论】:

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

标签: ios delegates uiviewcontroller


【解决方案1】:

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

根据您的新信息:

您想使用 tabBarController 委托方法;

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

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

【讨论】:

  • 谢谢,但我不明白你的回答。问题是何时触发从数据采集视图中写出数据,以便在该视图加载时可以将其读回数据摘要视图。如何知道数据采集视图即将消失?
猜你喜欢
  • 2014-10-07
  • 2022-11-18
  • 2017-04-17
  • 2022-01-15
  • 2019-09-20
  • 2018-08-05
  • 1970-01-01
  • 2016-01-16
  • 2013-06-16
相关资源
最近更新 更多