2009-08-18 31 views
0

(顺便说一句,我不使用界面 生成器)iPhone开发 - 帮助使用模式

我有一个小项目由负责管理其他5根的UIViewController用UITabBar查看控制器,我没有使用UITabBarController。根视图控制器只保留一个视图控制器实例化,当选中一个标签栏项目时,与该选项卡关联的视图控制器被实例化,旧视图控制器被移除,新视图被添加为子视图,而旧视图控制器被添加被释放。

每个视图控制器都有一个UIPickerView(除了有一个UIDatePicker)。当用户从标签1进入标签2并回到标签1时,我希望视图控制器在选择器中与之前选中的相同行进行实例化,即使它已被释放,所以我理解它最好使用Model类的实例存储有关View Controller状态的信息,然后在每个View Controller中创建init方法,该方法使用给定的参数进行初始化,该参数是Model的一个实例。

那么有人可以帮我吗? Model类应该是什么样子?它应该命名为什么?如何使用它的实例来存储关于一个View Controller的状态的信息,以及另一个实例存储关于另一个不同的View Controller的信息?我真的很想让这个简单的项目尽可能完美,并遵循MVC设计模式,所以我可以将所有其他标签栏应用程序都关闭。

谢谢!

回答

0

好吧,其他任何人都在想这件事,我做了一堂课,叫它Model,并且用它做了一个带有Download SynthesizeSingleton.h.zip宏的单例。您可以使用KVO(键值观察)在模型中的内容发生变化时进行操作,了解该内容Here,您可以有一个UITextField委托方法,用于编辑文本字段,并在该方法中将用于文本字段的模型中的伊娃与用户将其更改为的新文本一起设置。

0

看看NSMutableDictionary,特别是写入和阅读plist文件的部分。我相信苹果公司有一个示例应用程序在某处使用这种方法。

基本上,您将视图层次结构写入字典并在应用程序退出时存储它。当您重新启动时,请阅读并重新配置您的视图。

+0

我在谈论什么时候视图释放而不是应用程序退出时。 – mk12 2009-08-18 02:49:01

+0

您仍然可以使用这种方法,但我会建议不要在'dealloc'中执行此操作。在'-viewDidUnload'或其他方法中保存,然后在'-viewDidLoad'或'-viewWillAppear:' – jbrennan 2009-08-18 03:15:54

+0

中恢复状态我想使用模型类,而不是属性列表文件。 – mk12 2009-08-18 04:24:16