我有一个根UIViewController的子类,有一个UITabBar,(我不用UITabBarController)和5栏项目5图控制器。每一个图控制器具有UIPickerView.只有一个图控制器是没有实例的时间--当选项栏的项目被选中,在当前的一个被删除,新的一个实例,并补充说,旧的被释放(自我。oldvc=nil;).因此,如果用户去第3行的选择器中的第一个标签,然后开关于第二个标签,然后回到过去,我想在第3行的选择是再次选择.目前,我有如此的视控制化与initWithSelectedRowOfFirstComponent:(NSInteger)firstRow secondComponent:(NSInteger)..等等, 然后在我的根视控制,(渠道与卡巴),我有一个ivar缓存的每一个值..但我不知道..有没有更好的方式做到这一点?也许plist文件或字典或东西。。我不知道,你觉得怎么样最好的方式做到这会是什么?谢谢!

我决定用UITabBarController,让我们记忆的警告,除分配和使用的一类称为"模型",这是一个单独的(使用 这宏)举行的数据时使用的意见得到卸下,因为存的警告。

有帮助吗?

解决方案

如果你不想要保留所有五个图控制分配(在一系列)您能独立的 状态 你看到一个新的类。你会后来保留5个实例,这类周围和编写一个函数,可以初始化UIPickerViews从一个实例新的类。

每当用户选择不同的标签,你通过参考相应的国家对象的功能,设置了你的观点。此外,所有变化国家通过图应该是直接应用于模型的对象。你根UIViewController作为主要控制器。参见: 视模式.

其他的想法的基础上你的意见...

我想你可以尝试如下:而不是创造和摧毁你的UIPickerView对象,每当一个选项按钮被按下时,坚持向对象。有一个"NSMutableArray*viewArray"在你的主要控制器持有的所有意见。我假设你根UIViewController是代表UITabBar.当你接收 签栏:didSelectItem: 消息,你隐藏的前景,并显示一种对应选择的项目。只是循环的整个阵列和隐藏或隐藏该项目的基础上是否相当于所选择的选项栏的项目。

基本上这是一个有点像开始实施自己版本的UITabBarController,所以也许你应该考虑使用。

其他提示

也许你可以保持一系列的采摘你viewController和刚刚建立这一次,之前释放,就更新你的参选择器和在reinstantiation你设置的选择器阵列,而不是使一个新。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top