设置是这样的:的TabBar - 导航回到根层次Rootlevel
LoginView MvxViewController
MainView MvxTabBarViewController
-Tab 1
- View1 (MvxViewController)
-Tab 2
- View1 (MvxViewController)
-Tab 3
- View1 (MvxViewController)
在视图1一个我有一个泰伯维(列表),将始终充满不同 - 依赖于标签上。
到目前为止一切正常。我现在面临的问题是,当我在View1中并按下NavigationController上的“返回”按钮时,我将回到“LoginView”,而不是“MainView”(RootView所在的标签所在的位置)。
我发现下面的命令this.NavigationController.PopToRootViewController(true);
但我没有找到正确的地方使用它。 (如果它甚至以正确的方式)
任何帮助表示赞赏的想法!
编辑:
我现在解决了这个问题,通过删除下面的代码(注释部分删除):
public class MyPresenter : MvxModalSupportTouchViewPresenter, ITabBarPresenterHost
{
public MyPresenter(UIApplicationDelegate applicationDelegate, UIWindow window)
: base(applicationDelegate, window)
{
}
protected override UINavigationController CreateNavigationController(UIViewController viewController)
{
var toReturn = base.CreateNavigationController(viewController);
toReturn.NavigationBarHidden = false;
return toReturn;
}
public ITabBarPresenter TabBarPresenter { get; set; }
public override void Show(IMvxTouchView view)
{
//if (TabBarPresenter != null && view != TabBarPresenter)
//{
// TabBarPresenter.ShowView(view);
// return;
//}
base.Show(view);
}
}
我还是因为它的制作麻烦不明白这个代码的目的。通过删除它,一切工作正常。 (代码来自示例,在此处找到:https://github.com/slodge/MvvmCross-Tutorials/blob/0f313e3be66b06c110f587b653b9b0c831fb7164/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Touch/ConferencePresenter.cs)
你有一个导航内的标签栏控制器控制器?即你在任何时候调用像'[navigationController pushViewController:tabBarController animated:YES];'? –
是的,我在MainView – eMi
上有这种感觉,这是违反界面指南的。不记得我在哪里读到它,但我一直认为这是非常糟糕的做法。标签栏控制器可以呈现导航控制器,但不是相反。想象一下,你有你的根控制器呈现一个标签栏控制器,而控制器本身又呈现一个导航控制器。你会有多个导航栏吗?提交的内容如何?一团糟。 –