0

事後通知を使用しようとしていますが、適切に実装できません。これは私が持っているものです:

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 は、他のビューコントローラーがサブクラス化するクラスです。接続をチェックし、接続されたら、接続されていることを他のviewcontroller(ViewControllerTwo)に通知し、接続に基づいて必要なアクションを実行する必要があります。したがって、接続が変更されると、通知が送信されますが、その時点でビューコントローラーが初期化されていない可能性があります...

4

2 に答える 2

1

ViewControllerTwo は ViewControllerOne のサブクラスであるため、接続状態に基づいて BOOL を返すメソッドを ViewControllerOne に含めることができます。ViewControllerTwo の viewDidAppear メソッドでこのメソッドを呼び出して、ViewControllerTwo が最初に画面に表示されたときの状態を確認できます。必要に応じて通知を使用して、接続状態が変化したときに ViewControllerTwo を更新することもできます。または、接続を必要とする何かをしようとしているときはいつでも、このメソッドを呼び出すことができます。

于 2013-03-12T20:22:21.373 に答える
0

次のような通知を投稿するための代替構文を試しましたか?

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

postNotificationメソッドは、NSStringではなくNSNotificationオブジェクトを受け取ります。

于 2013-03-13T02:00:28.183 に答える