0

我正在尝试使用 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 是其他视图控制器子类的类。它检查连接性,连接后,我需要通知另一个视图控制器(ViewControllerTwo)我已连接并根据连接性采取必要的措施。因此,当连接发生变化时,将发布通知,但此时可能尚未初始化视图控制器......

4

2 回答 2

1

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

于 2013-03-12T20:22:21.373 回答
0

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

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

postNotification 方法接受一个 NSNotification 对象,而不是一个 NSString。

于 2013-03-13T02:00:28.183 回答