所有 UIVIewController 实时更新

Realtime update in all UIVIewController

我有这样的情况。 假设 VC A 有一些具有类似功能的事件列表 当用户单击任何事件时,他们可以重定向到它的详细信息页面,其中有事件组织者的名称 单击事件组织者加载所有事件 现在,如果我喜欢那个组织者的一个活动,那么它也会反映在 VC A.

我想到了三种方式

1) 我使用了 NSNotificationCenter 但它触发了多次,因为相同的 VC 在循环

中出现了多次

2) 这种情况下也不可能进行委托链接

3) KVO 也不兼容,因为在配置文件中新 api 调用发生

目前我正在为此使用数据库,但在 ViewWillAppear 中有很多代码需要更多管理

您可以使用 NSNotificationCenter!

你的每一次ViewWillAppear都喜欢,

   [[NSNotificationCenter defaultCenter] removeObserver:self name:@"EventChangeOfOrganizer" object:nil];


   [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(eventChangeOfOrganizer:)
                                             name:@"EventChangeOfOrganizer"
                                           object:nil];

并从您的详细信息屏幕中的事件更改,

   dispatch_async(dispatch_get_main_queue(), ^{

                     [[NSNotificationCenter defaultCenter] postNotificationName:@"EventChangeOfOrganizer" object:nil];

                 });

Swift :

在swift,

中应该是这样的
    NSNotificationCenter.defaultCenter().removeObserver(self, name: "EventChangeOfOrganizer", object: nil)

    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("eventChangeOfOrganizer:"), name:  "EventChangeOfOrganizer", object: nil)

    dispatch_async(dispatch_get_main_queue()) { 

        NSNotificationCenter.defaultCenter().postNotificationName( "EventChangeOfOrganizer", object: nil)
    }