【发布时间】:2012-02-05 18:19:41
【问题描述】:
在我的应用中,我有 5 个导航控制器。其中一个导航控制器显示 3 个视图控制器共享相同的数据(来自 Sqlite 数据库)。唯一的区别是它们以不同的方式呈现数据:
- ViewController 1 = 按国家/地区排序的食谱
- ViewController 2 = 按蔬菜分类的食谱
- ViewController 1 = 按要搭配的葡萄酒排序的食谱
Sqlite 数据库由网络服务提供。由于可以随时添加新食谱,因此我需要在应用程序激活时刷新数据库。由于应用程序可以在任何视图控制器上激活(取决于应用程序进入后台时选择的那个),我必须在 3 个视图控制器实现文件中编写刷新代码。
我认为这种方法很糟糕,因为当用户在导航控制器之间切换时会调用 Web 服务。这会创建频繁且无用的流量和数据库更新。我宁愿每次应用程序使用(活动/后台)只做一次这项工作。我在想 UINavigationControllerDelegate。这样,当应用程序变为活动状态时,无论导航控制器是什么,我都会只进行一次刷新。
我的问题是:
- 您认为这是一种好方法还是您会建议其他方法?
- 你知道在这种情况下如何实现 UINavigationControllerDelegate 吗?
- 这只能在 App Delegate 中进行还是我可以在外部进行?
提前感谢您的帮助。
【问题讨论】:
-
事实上,我让它变得更简单了。我只是在视图之间传递一个变量,让他们知道刷新是否完成。从 Web 服务加载提要并刷新数据库的第一个视图会启动变量。然后变量通过视图传递。它不像我想要的那样干净,但它可以完成工作。
标签: iphone uinavigationcontroller data-driven