UIButtonのTouchUpInside += で追加したイベントハンドラは
RemoveTarget(null, null, UIControlEvent.AllEvents);で削除できますが、
UIBarButtonItemにはRemoveTargetがありません。
同じようなことをすることはできないでしょうか?
以下のようにすれば指定したイベントハンドラだけ削除はできるみたいですが、やりたいことは「すべての」イベントに対してです。
c#
1var logoutButton = new UIBarButtonItem (UIBarButtonSystemItem.Stop) 2logoutButton.Clicked += logoutButtonEventHandler; 3logoutButton.Clicked -= logoutButtonEventHandler;
◆環境
▼Windows 10
Visual Studio Community 2017 Version 15.9.11
Xamarin 4.12.3.83
Xamarin.iOS and Xamarin.Mac SDK 12.4.0.64
▼Mac mini(Late 2014)
macOS Majave 10.14.4
Xcode 10.2.1
「2つのClickedハンドラを登録可能か」の質問の回答
以下のソースで確認できました。
c#
1 public override void ViewDidLoad () 2 { 3 base.ViewDidLoad (); 4 // Perform any additional setup after loading the view, typically from a nib. 5 6 UIBarButtonItem buttonItem = new UIBarButtonItem(UIBarButtonSystemItem.Camera); 7 buttonItem.Clicked += hander1; 8 buttonItem.Clicked += hander2; 9 10 UIToolbar toolbar = new UIToolbar(new CGRect(0, 20, View.Bounds.Width, 44)); 11 toolbar.Items = new UIBarButtonItem[] { buttonItem }; 12 View.AddSubview(toolbar); 13 } 14 15 private void hander1(object sender, EventArgs e) 16 { 17 Console.WriteLine("hander1"); 18 } 19 20 private void hander2(object sender, EventArgs e) 21 { 22 Console.WriteLine("hander2"); 23 }
ボタンを押すと以下が出力されるので2つ登録されているようです。
c#
12019-06-25 23:07:49.572 App1[339:16330630] hander1 22019-06-25 23:07:49.573 App1[339:16330630] hander2
あなたの回答
tips
プレビュー