2013-09-27 96 views
0

设置是这样的:的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);但我没有找到正确的地方使用它。 (如果它甚至以正确的方式)

我用这个项目落后https://github.com/slodge/MvvmCross-Tutorials/blob/master/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Touch/Views/TabBarController.cs

任何帮助表示赞赏的想法!

编辑:

我现在解决了这个问题,通过删除下面的代码(注释部分删除):

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

+0

你有一个导航内的标签栏控制器控制器?即你在任何时候调用像'[navigationController pushViewController:tabBarController animated:YES];'? –

+0

是的,我在MainView – eMi

+0

上有这种感觉,这是违反界面指南的。不记得我在哪里读到它,但我一直认为这是非常糟糕的做法。标签栏控制器可以呈现导航控制器,但不是相反。想象一下,你有你的根控制器呈现一个标签栏控制器,而控制器本身又呈现一个导航控制器。你会有多个导航栏吗?提交的内容如何?一团糟。 –

回答

1

通常,您对此类逻辑使用CustomPresenter - 有关示例,请参见http://mvvmcross.wordpress.com中的N = 25。

您的自定义演示者可以做这样的事情:

更多关于自定义演示,看到https://github.com/slodge/MvvmCross/wiki/Customising-using-App-and-Setup#custom-presentershttp://slodge.blogspot.co.uk/2013/06/presenter-roundup.html


这篇文章可能是特别有用 - http://deapsquatter.blogspot.co.uk/2013/06/custom-presenter-for-uitabbarcontroller.html

+0

感谢您的回答,我已经有了自己的Presenter。我能够通过删除一些代码来解决我的问题。你能否向我解释这段代码的用途(在cirriouscore例子中找到)...看看我的编辑 – eMi

+0

手表N = 25 - http://mvvmcross.wordpress.com/ – Stuart