我正在尝试使用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 ...
答案 0 :(得分:1)
由于ViewControllerTwo是ViewControllerOne的子类,因此ViewControllerOne中的方法可以根据连接状态返回BOOL。您可以在ViewControllerTwo的viewDidAppear方法中调用此方法,以在ViewControllerTwo首次出现在屏幕上时检查该状态。如果需要,您仍然可以使用通知,在连接状态更改时更新ViewControllerTwo。或者,只要您要执行任何需要连接的操作,就可以调用此方法。
答案 1 :(得分:0)
您是否尝试过发布通知的备用语法,例如:
[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"HandleOpenURL" object:nil]];
postNotification方法采用NSNotification对象,而不是NSString。