我正在尝试创建一个自定义的后退按钮,除Clicked事件外,其他所有功能似乎都可以使用。

我有两个屏幕,我要之间。我们将它们称为Screen1和Screen2。
单击Screen1时,Screen1中有一个按钮将我带到Screen2。

以下代码是我尝试创建自定义背景的方式,该背景已放置在Screen1的ViewDidLoad和ViewWillDisappear中(以下是ViewWillDisappear中的内容)。这两个函数中使用的代码是以下代码的最后两行。

protected override void ViewWillDisappear(bool animated) {
    base.ViewWillDisappear(animated);
    this.NavigationController.SetNavigationBarHidden(false, animated);
    UIBarButtonItem backBtn = new UIBarButtonItem("NewTitle", UIBarButtonItemStyle.Plain, delegate { Console.WriteLine("clicked"); });
    this.NavigationItem.BackBarButtonItem = backBtn;
}

运行时,当我单击Screen2中的“后退”按钮时,控制台中不会出现“已单击”一词。我也尝试通过调用隐藏默认值
this.NavigationItem.SetHidesBackButton(true, false);

在创建按钮之前,但它没有任何影响。

任何建议将不胜感激!

最佳答案

有时默认的.ctor无法按我们预期的那样工作。 IOW它调用init选择器,但是它并不总是提供完全初始化的实例(大多数情况下会引发ObjectiveC异常)。

要确保尝试使用以下代码:

UIBarButtonItem backBtn = new UIBarButtonItem ("NewTitle", UIBarButtonItemStyle.Plain, delegate {
   Console.WriteLine("clicked");
});
this.NavigationItem.BackBarButtonItem = backBtn;

如果可行,请填写http://bugzilla.xamarin.com/的错误报告,并添加指向该问题的链接。

关于ios - UIBarButtonItem的Clicked事件似乎在MonoTouch中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12133133/

10-12 14:44