【发布时间】:2016-09-17 03:57:34
【问题描述】:
我的 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 的后退按钮可以正常工作并正确呈现。
但是;当我点击一个将第三个视图推送到堆栈上的按钮然后导航回第二个视图时,后退按钮现在看起来像这样并且没有响应
更奇怪的是,如果我第二次进入第三个视图,后退按钮将隐藏在该视图上,但如果我点击按钮应该显示的位置,它仍然可以工作。然后,如果我导航回第二个视图,该按钮已完全消失并且仍然无响应。
知道可能导致此问题的原因以及如何解决?
【问题讨论】:
-
如果你删除了自定义 UINavigationController 还会出现这种情况吗?
-
是的,标准 UINavigationController 仍然会出现问题。此外,还有其他以相同方式推送和弹出的视图没有此问题。
-
确实很奇怪。您是否尝试在向下钻取时检查 ViewController 上的 NavigationStack?
UINavigationController上的ViewControllers属性是您正在寻找的。这有什么不同吗? -
ViewControllers 属性中包含正确的视图。我确实发现了一个奇怪的现象,看起来
NavigationController.NavigationBar.TopItem属性设置不正确。在其他视图中,该属性上的ToString()将显示后退按钮的当前标题以及看起来像十六进制内存地址的内容。在此页面上(从第三页返回后),它显示了我在该属性中所在的当前视图的标题。不知道为什么会这样。
标签: xamarin xamarin.ios