我遇到一个问题,我的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的后退按钮工作正常。
然而;当我点击一个按钮将第三个视图推入堆栈然后导航回第二个视图时,后退按钮现在看起来像这样并且没有响应
这甚至更奇怪的是,如果我第二次进入第三个视图,后退按钮将隐藏在该视图上,但如果我点击按钮应该显示的位置,它仍然可以工作。然后,如果我导航回第二个视图,按钮已完全消失,仍然没有响应。
知道可能导致此问题的原因以及我如何解决这个问题?
答案 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,谷歌只会显示解释这一点的结果,不幸的是,只有在我弄清楚如何解决这个问题之后。