UITabBarController 中的 UINavigationController,设置导航控制器标题

Posted

技术标签:

【中文标题】UITabBarController 中的 UINavigationController,设置导航控制器标题【英文标题】:UINavigationController within a UITabBarController, setting the navigation controller title 【发布时间】:2012-03-05 15:53:45 【问题描述】:

在我的应用程序中,我在 UITabBarController 中有一个 UINavigationController。一切正常,但是我无法为导航控制器设置标题。我尝试了几种不同的方法并在 Google 上四处搜索,但似乎没有解决此问题的方法。

任何帮助将不胜感激。

提前谢谢你。

山姆

【问题讨论】:

可能重复:***.com/questions/2760634/… 您当然应该在视图控制器中指定视图控制器的标题,然后导航控制器将应用正确的标题? 我在视图控制器中指定标题。谢谢。山姆。 【参考方案1】:

我最终找到了答案,是:

self.tabBarController.navigationItem.title = @"title";

【讨论】:

【参考方案2】:
self.navigationItem.title = @"Your Title"

适用于各种情况。

【讨论】:

这应该可以。检查以确保 self.navigationItem 不返回 nil。如果为零,请检查您的连接。 如果您是从 xib 或故事板加载,请尝试将 navigationItem 拖到您的 viewController(如果没有)【参考方案3】:

对我来说,以下工作正常:

appDelegateDidFinishLaunching:Method中初始化控制器:

UINavigationController *navContr1;
UINavigationController *navContr2;

UIViewController *viewController1, *viewController2;

viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];



navContr1       = [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease];
navContr2       = [[[UINavigationController alloc] initWithRootViewController:viewController2] autorelease];


self.tabBarController = [[[UITabBarController alloc] init] autorelease];
//self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navContr1, navContr2, nil];

self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];

完成此操作后,在您不同的 viewControllers initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil - 方法中您可以使用以下行更改标题:

self.title = @"Your Title";

祝你好运。

【讨论】:

不幸的是,我的应用程序已经相当深入,所以我不能使用这种确切的方法,但我的方法并没有那么不同。但是 self.title 不起作用, self.title 只是设置标签栏的标题。不过谢谢! self.navigationController.title = @"new title" 怎么样?【参考方案4】:

查看文档中的UIViewController 类。有一个指向UINavigationItem 的属性,然后有一个指向title 的属性。如果指向导航项的指针返回 nil,则您一定没有正确地将控制器连接在一起。

【讨论】:

【参考方案5】:

self.title 始终设置 ViewController 的 rootViewController 对象的磁贴。

如果你的viewControllerrootViewControllerUINavigationController,那么self.title 将设置UINavigationController 的标题。

同样,如果您使用UIViewController 对象初始化了UITabViewController,那么self.title 将应用于UITabViewControllerUITabBar 索引处的标题对应按钮。

因此说,self.title 适用于持有viewController 的对象。

【讨论】:

以上是关于UITabBarController 中的 UINavigationController,设置导航控制器标题的主要内容,如果未能解决你的问题,请参考以下文章

为啥标签栏没有出现在整个应用程序中?

UITabBarController 问题中的 UINavigationController

从堆栈中弹出导航控制器/创建双视图

UITabBarController 中的 UINavigationController 没有完全包裹 UIViewController

嵌入在 NavigationController 中的 UITabBarController

以编程方式将 UITabBarController 中 TabBarItem 中的图标居中