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
对象的磁贴。
如果你的viewController
和rootViewController
是UINavigationController
,那么self.title
将设置UINavigationController
的标题。
同样,如果您使用UIViewController
对象初始化了UITabViewController
,那么self.title
将应用于UITabViewController
的UITabBar
索引处的标题对应按钮。
因此说,self.title
适用于持有viewController
的对象。
【讨论】:
以上是关于UITabBarController 中的 UINavigationController,设置导航控制器标题的主要内容,如果未能解决你的问题,请参考以下文章
UITabBarController 问题中的 UINavigationController
UITabBarController 中的 UINavigationController 没有完全包裹 UIViewController