通过Notification通知模式在ViewController之间传值

nandy007
   2013-11-16 11:55:45发布  2016-12-16 16:55:49更新 0收藏, 4470浏览
ExMobi原生扩展
已关闭
0

通知模式简单来说就是通过监听指定的通知对通知的响应者做出相应的处理。

所以,这里就涉及通知发布者(RootViewController)和通知响应者(ModalViewController)。

首先,发布者需要先广播一个通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editLabel:) name:kEditLabelNotification object:nil];

注:这里面的kEditLabelNotification是我们在预编译里面配置的固定字符串:

//定义通知固定字符串
#define kEditLabelNotification @"EditLabel"

并且发布者需要给这个通知设置一个响应处理的方法,这里叫editLabel,来处理响应者的响应,他需要接收一个object参数:

- (void) editLabel:(NSNotification *) notification
{
    
    id text = notification.object;
    
    UILabel *label = (UILabel *)[self.view viewWithTag:100];

    
    label.text = text;
}

这时候响应者就可以在需要的时候进行响应,并把必要的参数通过object传递给发布者:

[[NSNotificationCenter defaultCenter] postNotificationName:kEditLabelNotification object:_textField.text];

发布者在接收到响应后就会调用响应处理的方法来响应发布者。

这样就完成了整个通知的发布、响应和处理。

需要注意的是,发布通知的ViewController在销毁的时候要把通知也移除掉:

- (void) dealloc
{
    //控制器销毁的时候移动要把通知移除
    [[NSNotificationCenter defaultCenter] removeObserver:self name:kEditLabelNotification object:nil];
    [super dealloc];
}

下面是示例源码,赶紧下载运行看看把

ModalViewNotification.zip(0.06M 下载次数:61)

3个回答

0

学习notifigation和viewcontroller间消息传滴

melhocc
    2014-03-06 09:53:00回答
0

icudbisibsidcsdcd

juwuba
    2016-02-07 00:03:44回答
0

写的很好,非常感谢作者

juwuba
    2016-02-07 00:04:17回答

我要回答

下载APP
扫码下载栗子社区APP