Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIBarButtonItem的单击事件在MonoTouch中似乎不起作用_Ios_Xamarin.ios_Uibarbuttonitem - Fatal编程技术网

Ios UIBarButtonItem的单击事件在MonoTouch中似乎不起作用

Ios UIBarButtonItem的单击事件在MonoTouch中似乎不起作用,ios,xamarin.ios,uibarbuttonitem,Ios,Xamarin.ios,Uibarbuttonitem,我正在尝试创建一个自定义的后退按钮,除了单击的事件之外,其他一切似乎都正常工作 我有两个屏幕,我要去之间。我们将它们称为Screen1和Screen2。 Screen1中有一个按钮,单击该按钮可将我带到Screen2 下面的代码是我如何尝试创建自定义back的,它已被放置在Screen1的ViewDidLoad和ViewWillEnglishe中(以下是我在ViewWillEnglishe中的内容)。这两个函数中使用的代码是以下代码的最后两行 protected override void Vi

我正在尝试创建一个自定义的后退按钮,除了单击的事件之外,其他一切似乎都正常工作

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

下面的代码是我如何尝试创建自定义back的,它已被放置在Screen1的ViewDidLoad和ViewWillEnglishe中(以下是我在ViewWillEnglishe中的内容)。这两个函数中使用的代码是以下代码的最后两行

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;
}
运行时,当我在屏幕2中单击后退按钮时,控制台中永远不会出现“单击”一词。我还尝试通过调用

this.NavigationItem.SetHidesBackButton(true, false);
在创建按钮之前,但它不会影响任何内容


任何建议都将不胜感激

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

请务必尝试使用以下代码:

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

如果可以的话,请填写一份bug报告,并添加一个指向这个问题的链接。

经过大量的研究和尝试,我发现了以下帖子:(注意,帖子中有一些粗话)。将变量BackBarButtonim设置为自定义按钮似乎不起作用;您可以更改文本,但似乎就是这样

然而,这里的另一篇帖子说,它可以在推送控制器中工作,尽管它似乎从未对我起作用:

要解决此问题,以下代码适用于我:

public override void ViewDidLoad() {
    base.ViewDidLoad();
    this.NavigationItem.SetHidesBackButton(true, false);
    UIBarButtonItem backBtn = new UIBarButtonItem("Back", UIBarButtonItemStyle.Plain, delegate {
        Console.WriteLine("clicked");
        //one of the NavigationController pop functions to go back
    });
    this.NavigationItem.LeftBarButtonItem = backBtn;
}

不幸的是,这种方法也不起作用。“单击”一词没有出现。那么你的问题不是你粘贴的代码,而是其他地方。请编辑您的问题并包含有关如何设置的更多信息。