代码之家  ›  专栏  ›  技术社区  ›  Rits

在视图控制器之间共享和更改数组的优雅方法

  •  1
  • Rits  · 技术社区  · 15 年前

    我有两个视图控制器: LocationsViewController ,和 SettingsViewController . 位置视图控制器 符合 SettingsViewControllerDelegate 协议。该协议仅包含一个方法:

    // SettingsViewControllerDelegate.h
    - (void)settingsViewControllerDidFinish:(SettingsViewController *)controller;
    

    当我的 位置视图控制器 设置视图控制器 那是情态表达的。

    到目前为止,我认为这是一个很好的代码设计。问题是这些视图控制器之间的数据共享。两个视图控制器都显示相同的数据:大约10个对象(位置)的数组。只有 设置视图控制器

    现在我以一种不雅的方式“解决”了这个问题:两个视图控制器都有对我的应用程序委托的引用,而我的应用程序委托有一个 locations 设置视图控制器 直接改变数组。例如:

    // SettingsViewController.m
    [appDelegate.locations addObject:newLocation];
    

    2 回复  |  直到 15 年前
        1
  •  1
  •   Brian    15 年前

    在这种情况下,我用一个单子 Settings 反对。这只是一个 NSObject +[Settings settings] . 有些设置只是一个包装 NSUserDefaults ,在这种情况下,我只定义静态方法。

    singleton也不完全被认为是最佳实践,但是它们在SDK中到处都被使用(另外,向每个人传递设置实例很快就会让人恼火)。

        2
  •  3
  •   Community Mohan Dere    9 年前

    你可能想用一个观察者来监视数组的变化。我可以输入一些东西,但在StackOverFlow中已经有了很好的答案。

    Key Value Observing with an NSArray