【问题标题】:Change title of navigationItem Title based on selected Tab Bar Item根据选定的选项卡栏项目更改导航项目标题的标题
【发布时间】:2012-12-17 09:29:12
【问题描述】:

我有一个标签栏视图控制器,它有四个可能的视图控制器。我的所有其他视图都有关系的主选项卡栏视图也有一个导航栏,我可以双击它并更改故事板中的标题。我需要知道的是如何根据选择的标签栏项目来改变这个导航项目的标题。

例如,我将有四个选项卡。 1 是“账单”,2 是“杂货”,3 是“煤气”,4 是“个人”。如果选择了“账单选项卡”等等,我希望视图的标题是账单。

编辑:希望这能澄清我想要完成的事情。

我希望能够更改右侧四个表格视图顶部导航栏的标题。选项卡栏控制器是我实际上可以双击并更改图块的唯一地方,而故事板是。我希望根据从标签栏中选择的表格视图来更改标题。

【问题讨论】:

  • “四个可能的视图控制器”是否都是同一类的实例?这是您要更改标题的地方吗?或者您想更改父视图控制器的标题?
  • 每个表视图控制器都有自己的类,即使加载不同的数据源也几乎相同。
  • 好的,我已经编辑了我的答案。让我知道这是否有帮助。

标签: iphone ios


【解决方案1】:

删除您手动添加到视图控制器的任何导航栏项并将其添加到您的 viewDidLoad 方法中

self.navigationController.navigationBar.topItem.title = @"My Title";

self.navigationController.topViewController.title = @"My Title";

【讨论】:

    【解决方案2】:

    您应该能够像这样在每个“四个视图控制器”中设置标题属性:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.title = @"Title For View Controller Goes Here";
    }
    

    然后,每当单击此视图控制器的所述选项卡时,导航栏的标题应更改为此标题。

    编辑

    听起来您可能在标签栏的视图中放置了一个来自 Interface Builder 的 UINavigationBar 对象。相反,您实际上希望将UITabBarController 嵌入到UINavigationController 中。

    阅读 Ray Wenderlich 的关于开始故事板的教程,这应该会告诉你如何做到这一点:

    http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

    祝你好运!

    【讨论】:

    • 这就是我认为我需要做的只是不是 100% 确定步骤。整个协议和委托的事情对我来说仍然有点混乱。您说我需要传递“子引用”的部分,是否放在我的子类中?
    • 这就是我的想法,但对某些人来说它不起作用。在调试过程中,它遇到了代码行,我可以看到 _title 已更改,但未显示。我认为这与这四个表视图控制器中的每一个实际上都没有导航项有关。我的导航项实际存在的唯一位置是选项卡栏控制器。四个表视图控制器实际上在情节提要中没有可选的导航项。
    • 您是否为创建导航项的四个表格视图控制器编写了代码?如果是这样,你可以发布它吗?如果没有,您需要使用代码或在故事板中创建导航项——如果您需要,我可以解释如何做到这一点。
    • @Joe - 我的导航项都是通过使用故事板创建的。
    • @JRG - 我相信我就是这样做的。如果我将模拟指标中的顶栏选项从推断更改为无并运行,我的标签栏控制器中仍然有导航栏,即使它没有显示在情节提要中。如果我为标签栏控制器创建一个自定义类,我可以将标题设置为我想要的任何内容。当我选择一个新标签时,它不会改变。即使我在与所选视图控制器关联的后端完成了self.title = @"Some Name";
    【解决方案3】:

    在每个选项卡选择上,您都可以更改标题。

       - (void)tabBarController:(UITabBarController *)tabBarController 
         didSelectViewController:(UIViewController *)viewController
        {
          viewController.title=@"your title"
        }
    

    【讨论】:

      【解决方案4】:

      我应该警告您,这种方法可能是一种不雅的技巧,因为我自己才刚刚开始了解导航。但这是我的处理方法:

      基本上,您应该为每个想要命名的UIViewController 添加一个UINavigationItem,并根据显示的UIViewController 更改UINavigationItem 的文本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-04
        相关资源
        最近更新 更多