我想知道你对最佳方法的看法。
我有一个带有UITableView的视图控制器(EventsController)。它从后端应用程序获取事件数据,并将它们存储在实例变量事件(NSArray)中。它使用events数组填充表视图。
当用户点击表中的一行时,它们将被带到另一个视图控制器(EventDetailController)。在segue期间,EventDetailController传递选定的事件对象。 细节控制器允许用户关注或取消关注此事件。当用户跟踪/取消关注将信息发送到后端的事件时。在从后端收到成功响应之后,细节控制器发布通知,让观察者知道事件已被更改。 EventsController观察此通知,当它收到通知时,重新加载自身(从后端获取所有事件并重新加载表)。我认为这是过分的(顺便说一句,这个通知也被除了EventsController以外的视图使用,我认为这就是为什么他们使用通知而不是协议/委托)。
我的问题是如何更新EventsController中更改的事件而不转到后端。 请注意,两个控制器都在导航控制器内。
你会使用当前的方法,1,2a或2.b?感谢。
答案 0 :(得分:1)
我会把事件分成一个模型类。您可以在EventsController中对其进行实例化,并通过属性将其传递给EventDetailController,也可以使其成为整个应用程序可以访问的单例。当您更改事件详细信息中的事件时,只需在EventModel类中更新它,让模型类广播通知,或者只通过KVO观察事件数组。 (只是警告:如果对事件数组使用可变数组,则变异集合中的一个对象将不会触发KVO通知。您必须替换数组才能获得自动注释。)
一旦你以这种方式分离出模型,你就会发现从应用程序的任何地方进行重新加载,从网络服务重新加载,保存事件,修改事件等等都很容易。