【问题标题】:ios best practices- navigation and tab controllers and push/popios 最佳实践 - 导航和选项卡控制器以及推送/弹出
【发布时间】:2011-11-22 00:28:56
【问题描述】:

我的问题:

我的应用需要用户登录,所以我展示的第一个视图是登录视图。如果我们登录了,那么我们会显示应用视图,它是一个标签栏控制器。这些选项卡之一是帐户信息 + 注销。注销时,我想返回登录屏幕。

我的解决方案:

根视图是一个导航控制器,它保存着主视图。主视图是透明的,只是说你没有登录吗?将帐户屏幕推送到堆栈上。如果已登录,则将选项卡控制器视图推送到堆栈上。选项卡控制器中的每个选项卡都是一个导航控制器。单击帐户选项卡会将帐户视图上的帐户视图推送到堆栈上。帐户视图有一个注销按钮,它会弹出 2 个视图(并且不起作用):

 // Go to main view (2 views up) to show default login screen (as we won't be logged in anymore)
    UINavigationController *navController = self.navigationController;
    [navController popViewControllerAnimated:NO];
    [navController popViewControllerAnimated:YES];

我认为是问题所在:

我在顶层的导航控制器与标签控制器中的较低级别的导航控制器不同。

我的问题看起来很典型,但我的解决方案似乎很笨拙。这不是最好的方法!有什么建议吗?

【问题讨论】:

    标签: iphone ios uinavigationcontroller


    【解决方案1】:

    试试这样的?看起来很复杂,但让我们尝试一下。

    [self.navigationController popViewControllerAnimated: NO];
    [self.tabBarController.navigationController popViewControllerAnimated: YES];
    

    【讨论】:

    • 这似乎工作正常。我想我只是将选项卡视图粘贴在堆栈顶部,并且只使用位于屏幕底部的选项卡,可能比拥有多个导航控制器更容易在启动时隐藏它们
    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多