【发布时间】:2011-07-27 16:33:33
【问题描述】:
在我正在进行的一个项目中,设计决定是在顶部使用 UISegmentControl,在底部使用 UITabBarController。 UISegmentControl 为 3 个不同的视图提供 3 个选项。目前,我的同事将所有3个视图添加到NSArray,然后选择该特定选项卡,然后基于UiseGendControl,所选的视图获取到求,其他两个是隐藏的。它似乎没有遵循 Apple 的延迟加载指南,而且似乎很昂贵,因为 3 个 viewDidLoads(对数据库进行查询)一次全部加载。第一次选择选项卡时会出现一些延迟,一次加载所有 3 个视图控制器。
有没有更好的方法来做到这一点?我看到了一个简单的例子,它只有两个 viewController,以及一个可以在两个视图之间切换的按钮。这对我来说很有意义,因为你总是知道你以前的视图是什么,你可以从超级视图中删除那个视图,展示你的新视图,释放你的旧视图。但是有 3 个选择,我不知道如何跟踪我的视图层次结构(因为我可能在段 0 上,显示视图 0,然后转到段 2,显示视图 2)。我不确定如何检查显示的最后一个视图,即使这是最好的方法。我在想,如果有更好的选择来跟踪这一点,但仍然使用段控制,那么最好在项目变得更复杂之前现在就这样做。谢谢!
【问题讨论】:
-
你有 3 个不同的视图——它们都连接到同一个视图控制器?
-
我猜是的,因为在第一段的末尾你提到了 3 个 VC。
-
是的,有 3 个不同的视图控制器,每个控制器都有自己的视图。他在主视图控制器上使用了一组视图控制器,在 viewDidLoad 中初始化了所有 3 个,然后根据段控制一次只显示一个,隐藏其他的。
-
是的,这不是一个好方法,IMO。除了您已经注意到的延迟之外,还有两个 VC 被加载到内存中的内存消耗问题。这些 VC 可能永远不会显示,因此将它们保存在内存中并不是一个好主意。
标签: iphone objective-c cocoa-touch uiviewcontroller