Xamarin iOS后退按钮导航后停止工作

时间:2016-09-15 19:55:40

标签: xamarin xamarin.ios

我遇到一个问题,我的UINavigationControllers后退按钮停止工作,导航离开视图然后返回到它后呈现错误。

为了让它尽可能简单,我加载了一个拆分视图,其中详细信息视图是一个自定义的UINavigationController。没什么特别的,它只是设置导航栏的背景颜色。

// shortcut for our navbar
public class SANavigationController : UINavigationController
{
    public SANavigationController (UIViewController root) : base(root)
    {
        this.NavigationBar.BackgroundColor = AppearanceManager.AccentColor;
    }
    public SANavigationController(IntPtr p) : base(p){}
}

从那里视图被推送到导航控制器堆栈,从基本视图开始,该视图是关于我公司存档的特定客户的详细信息。然后,此客户详细信息视图提供指向其他视图的链接,这些视图可深入详细了解有关客户的不同方面。

其中一个向下钻取视图存在特定问题。当你第一次导航到它时,一切正常,即NavigationController的后退按钮工作正常。

Working Back Button

然而;当我点击一个按钮将第三个视图推入堆栈然后导航回第二个视图时,后退按钮现在看起来像这样并且没有响应

Unresponsive Back Button

这甚至更奇怪的是,如果我第二次进入第三个视图,后退按钮将隐藏在该视图上,但如果我点击按钮应该显示的位置,它仍然可以工作。然后,如果我导航回第二个视图,按钮已完全消失,仍然没有响应。

知道可能导致此问题的原因以及我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我找到了自己问题的答案。事实证明这是MonoTouch.Dialog.DialogViewController的一个问题。隐藏后退按钮的视图继承了DialogViewController并使用了(UITableViewStyle style, RootElement root)构造函数。为了使DialogViewController能够与UINavigationViewController一起正常工作,您需要调用包含推送bool (UITableViewStyle style, RootElement root, bool pushing)的构造函数。所以在我的代码中:

public class My2ndLevelController : DialogViewController
{
     public My2ndLevelController () : base(UITableViewStyle.Grouped, null){}
}

成为了这个

public class My2ndLevelController : DialogViewController
{
     public My2ndLevelController () : base(UITableViewStyle.Grouped, null, true){}
}

如果你在搜索字词中包含DialogViewController,谷歌只会显示解释这一点的结果,不幸的是,只有在我弄清楚如何解决这个问题之后。