无法使后期通知正常工作

时间:2013-03-12 17:16:37

标签: ios notifications nsnotification

我正在尝试使用postnotification但无法正确实现它。这就是我所拥有的:

在ViewControllerOne.m中

NSLog(@"PostNotification");
[[NSNotificationCenter defaultCenter] postNotificationName:@"Connectivity" object:nil];

在ViewControllerTwo.m中

- (void)viewDidLoad 
{
    [super viewDidLoad];

    NSLog(@"Added Obeserver");

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

}

-(void)connectedTo:(NSNotification *)notification
{
    m_connectivity = @"Connected";
}

似乎没有调用connectedTo函数。这是因为:

代码的另一部分:

if ([m_connectivity isEqualToString:@"Connected"])
{
       NSLog(@"Connected");
}
else
{
     NSLog(@"NotConnected");
}

不确定我的错误是什么。呃一些指导...谢谢..

编辑:

ViewControllerOne.m是其他viewcontrollers继承的类。它检查连接性,当连接时,我需要通知另一个viewcontroller(ViewControllerTwo)我已连接并根据连接采取必要的操作。因此,当连接发生变化时,通知将被发布,但是此时可能尚未初始化viewcontroller ...

2 个答案:

答案 0 :(得分:1)

由于ViewControllerTwo是ViewControllerOne的子类,因此ViewControllerOne中的方法可以根据连接状态返回BOOL。您可以在ViewControllerTwo的viewDidAppear方法中调用此方法,以在ViewControllerTwo首次出现在屏幕上时检查该状态。如果需要,您仍然可以使用通知,在连接状态更改时更新ViewControllerTwo。或者,只要您要执行任何需要连接的操作,就可以调用此方法。

答案 1 :(得分:0)

您是否尝试过发布通知的备用语法,例如:

[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"HandleOpenURL" object:nil]];

postNotification方法采用NSNotification对象,而不是NSString。