【问题标题】:Share object state between View Controllers in IOS developmentIOS开发中View Controllers之间共享对象状态
【发布时间】:2017-02-08 11:26:05
【问题描述】:

我的应用在主 TabViewController 上有两个选项卡。

  • 第一个标签显示了我喜欢的水果列表。
  • 第二个选项卡在您键入时向 api 发送请求,以搜索名称搜索水果。

如果用户点击任何水果,我将显示一个水果详细信息视图,在该视图中可以喜欢该水果(如果已经喜欢,您可以不喜欢)。

现在,我正在尝试实现以下目标:

  • 用户搜索水果
  • 用户喜欢水果
  • 用户导航回列表
  • 列表显示了突出显示“喜欢”图标的水果

如何通知我在选择行之前的列表,单元格状态的变化(这是不喜欢的,现在是喜欢的)。 如何通知 OTHER 列表(在另一个选项卡中)同样的事情?

谢谢大家

编辑

我会尝试展示一个真实的样本! 当你去应用商店搜索 GMAIL

然后您转到精选(图表,我在您所在的国家/地区不知道),然后寻找相同的应用

当您在其中任何一个视图控制器中下载它时,同时另一个控制器显示相同的状态。这正是我想做的。

【问题讨论】:

    标签: ios uitableview uilocalnotification tableviewcell


    【解决方案1】:

    简单的方法是创建一个带有数组fruit 的单例类。 例子: 你有模型水果:

    class Fruit {
           var name: String?
           var isLike: Bool?
    }
    class List: NSObject {
        static let sharedInstance = APIRequest()
        var fruits = [Fruit]()
    }
    

    每个视图控制器都可以访问它:

    var list = List.sharedInstance
    

    每次喜欢或不喜欢 1 个水果时,更改该水果的属性,并使用 NSNotification 将更改通知给其他视图控制器。收到通知的 Viewcontroller 将访问单例类的水果列表。

    【讨论】:

    • 我真的不认为使用这个单例列表是个好主意。我没有理由为自己辩护,但我更喜欢使用数据库或类似的东西。无论如何,NSNotification 是我以前不知道的。为此 +1
    • 哦,谢谢!正如我所说,简单的方法,更好的是,您可以了解 Key-Value Observing [link] (cocoacasts.com/key-value-observing-kvo-and-swift-3)
    • 在你的情况下,不必要的使用数据库,它是更复杂的设置和使用时间。
    • 谢谢@Dan!您关于 NSNotification 的解决方案解决了我的问题。正是我想要的。我永远不会意识到“通知”可以这样帮助我。当你说通知时,我中间的第一件事就是我用弹出窗口通知用户,它对我有什么帮助,哈哈。谢谢大佬,祝你度过愉快的一周
    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    相关资源
    最近更新 更多