【问题标题】:Changing viewcontroller for a tab in a tabbar controller更改选项卡控制器中选项卡的视图控制器
【发布时间】:2011-06-05 18:42:02
【问题描述】:

我目前正在开发一个具有 TabBarController 的应用程序,并且每个选项卡都包含一个导航控制器。这样,在每个选项卡上,我可以通过将视图控制器推送到导航控制器来显示视图上所选行的详细信息。每个视图上方还有一个 UINavigationItem。在这个导航项中,我放置了一个按钮。

但是现在我想更改某个选项卡的视图控制器,当单击 UINavigationItem 中的按钮时,我要更改的视图(控制器)必须像该选项卡的根视图控制器一样工作。

所以我不想在导航控制器上推送另一个视图,而只是切换到该视图(在同一个选项卡中)并将其用作根视图控制器。

我找不到一个好的方法来做到这一点,实际上让视图正常工作。当我切换视图时它们要么不释放(这很好,因为我想将内存使用量保持在最低限度)。

解决这个问题的一种方法,可能是我在我的 TabBar 控制器中添加更多选项卡,并在单击按钮时切换到正确的选项卡,但这是最后的手段。

不确定我是否正确描述了这一点,但我想知道最好的方法是什么。我的偏好是拥有 3 个视图控制器并在它们之间切换。

【问题讨论】:

    标签: iphone objective-c cocoa-touch ios4


    【解决方案1】:

    希望我正确理解您的问题:您希望基本上“重置”您的导航控制器以拥有一个新的根目录。

    您可以通过告诉导航控制器您要显示一组新的视图控制器来做到这一点:

    [navigationController setViewControllers:[NSArray arrayWithObject:newViewController] 
                                    animated:NO];
    

    这将删除该导航控制器堆栈中当前的所有视图控制器,并将根视图重置为newViewController

    【讨论】:

    • 嗨,如果您有一个 NavigationController 作为 self.window.rootViewController,我相信这是可行的。但是,我正在实现 TabBarViewController 和 self.window.rootViewController = tabBarViewController。无论如何,我仍然可以达到与原始 UITabBarController 相同的结果。
    • 我们应该在哪里做。 (ViewWillAppear 或 tabbarController 委托方法)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2017-12-13
    • 2019-04-24
    • 2016-02-25
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多