Add/remove EventHandler for UIBarButtonItem

2019-06-25 04:50发布

One can define an EventHandler in the constructor:

UIBarButtonItem logoutButton = new UIBarButtonItem (UIBarButtonSystemItem.Stop, logoutButtonEventHandler);

private void logoutButtonEventHandler(object sender, EventArgs args){
    Console.WriteLine("Logout");
}

Is it possible to remove the EventHandler afterwards? Perhaps by not using an EventHandler at all and instead use the Action/Target properties of UIBarButtonItem? I don't find any examples. Only anonymous methods are used all the time.

How do you do that?

2条回答
手持菜刀,她持情操
2楼-- · 2019-06-25 05:31

Instantiate your object and then set the handler:

var logoutButton = new UIBarButtonItem (UIBarButtonSystemItem.Stop)
logoutButton.Clicked += logoutButtonEventHandler;

To remove it afterwards use the -= syntax:

 logoutButton.Clicked -= logoutButtonEventHandler;

Just beware of commom pitfalls when you do so because they may cause memory leaks.

查看更多
Explosion°爆炸
3楼-- · 2019-06-25 05:33

UIBarButtonItem has Clicked event so you can subscribe and unsubscribe to it.

查看更多
登录 后发表回答