11

NSNotificationCenter を使用して、アプリから別のビューに通知を投稿しようとしています。したがって、宛先クラスでは、次のようにオブザーバーを作成します。

NSNotificationCenter.DefaultCenter.AddObserver ("ChangeLeftSide", delegate {ChangeLeftSide(null);});

そして私は私の方法を持っています:

public void ChangeLeftSide (UIViewController vc)
{
    Console.WriteLine ("Change left side is being called");
}

別の UIViewController から、次のように通知を投稿しています。

NSNotificationCenter.DefaultCenter.PostNotificationName("ChangeLeftSide", this);

送信先クラスの投稿通知で渡されるビュー コントローラーにアクセスするにはどうすればよいですか? iOSでは非常に簡単ですが、モノタッチ(Xamarin)では道を見つけることができないようです...

4

2 に答える 2

10

場合AddObserverは、少し異なる方法で行いたいと考えています。次のことを試してください。

NSNotificationCenter.DefaultCenter.AddObserver ("ChangeLeftSide", ChangeLeftSide);

そして、実際のオブジェクトを提供して、期待されるものChangeLeftSideに準拠するメソッドの宣言。:Action<NSNotification>AddObserverNSNotification

public void ChangeLeftSide(NSNotification notification)
{
    Console.WriteLine("Change left side is being called by " + notification.Object.ToString());
}

そのPostNotificationNameため、UIViewController オブジェクトを通知にアタッチしています。これは、プロパティNSNotificationを介して取得できObjectます。

于 2013-03-18T20:49:47.753 に答える
0

答えが見つかりました。質問に投稿したコードに加える必要がある変更は次のとおりです。

public void ChangeLeftSide (NSNotification notification)
{
    Console.WriteLine ("Change left side is being called");
    NSObject myObject = notification.Object;
    // here you can do whatever operation you need to do on the object
}

そして、オブザーバーが作成されます:

NSNotificationCenter.DefaultCenter.AddObserver ("ChangeLeftSide", ChangeLeftSide);

これで、NSObject をキャストまたはタイプ チェックして、何でも実行できるようになりました。終わり!

于 2014-03-12T14:26:19.103 に答える