【问题标题】:iPhone dev - help with using ModeliPhone dev - 使用模型的帮助
【发布时间】:2009-08-18 02:22:47
【问题描述】:

(顺便说一下,我不使用接口 建造者)

我有一个由根 UIViewController 组成的小项目,它管理 5 个带有 UITabBar 的其他视图控制器,我没有使用 UITabBarController。 The Root View Controller only ever keeps one of its View Controllers instantiated, when a tab bar item is selected, the View Controller associated with that tab gets instantiated, the old one is removed, the new one is added as a subview and the old one被释放。

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

那么有人可以帮帮我吗?模型类应该是什么样的?它应该叫什么名字?它的一个实例如何用于存储有关一个 View Controller 状态的信息,而另一个实例存储有关另一个不同 View Controller 的信息?我真的很想把这个简单的项目做得尽可能完美,并遵循 MVC 设计模式,这样我就可以将所有其他选项卡栏应用程序都以此为基础。

谢谢!!

【问题讨论】:

    标签: iphone cocoa-touch model model-view-controller


    【解决方案1】:

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

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

    【讨论】:

    • 我说的是视图何时释放,而不是应用退出时。
    • 你仍然可以使用这种方法,但我建议不要在dealloc 中这样做。在-viewDidUnload或类似方法中保存,然后在-viewDidLoad-viewWillAppear:中恢复状态
    • 我想使用模型类,而不是属性列表文件。
    • viewDidUnload 永远不会被调用,因为当它不被显示时,我将整个视图控制器从内存中释放出来。
    【解决方案2】:

    好吧,对于其他对此感到疑惑的人,我创建了一个类,将其命名为 Model,并使用 Download SynthesizeSingleton.h.zip 宏使其成为单例。当模型中的内容发生变化时,您可以使用 KVO(Key-Value Observing)来做一些事情,了解 Here,您可以例如在编辑文本字段时有一个 UITextField 委托方法,并在该方法中为您的文本字段设置模型中的 ivar,并使用用户将其更改为的新文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多