3

我有一个在启动时有导航栏的视图控制器。
在一些 UIViewConrollers 之后,我添加了一个标签栏控制器,其中我为每个标签栏创建了四个标签栏和四个视图控制器。
现在,如果我创建带有与每个选项卡相关的导航栏的选项卡栏,它会在顶部显示两个导航栏,如果创建没有导航栏的选项卡栏,它将只显示一个选项卡栏,但我无法添加对应于每个选项卡视图控制器的标题到该导航bar
这是我创建标签栏的代码

EventDetailViewController *firstViewController = [[EventDetailViewController alloc]init];
firstViewController.tabBarItem = [[[UITabBarItem alloc]initWithTitle:@"Home" image:[UIImage imageNamed:@"Multimedia-Icon-Off.png"] tag:2]autorelease];                                 MoreInfo *secondViewController = [[MoreInfo alloc]init];
secondViewController.tabBarItem = [[[UITabBarItem alloc]initWithTitle:@"Info" image:[UIImage imageNamed:@"Review-Icon-Off.png"] tag:0]autorelease];

PlaceInfoViewController *thirdViewController = [[PlaceInfoViewController alloc]init];
thirdViewController.tabBarItem = [[[UITabBarItem alloc]initWithTitle:@"Lugar" image:[UIImage imageNamed:@"Place-icon-OFF.png"] tag:1]autorelease];

FavoritesViewController *forthViewController = [[FavoritesViewController alloc]init];
forthViewController.tabBarItem = [[[UITabBarItem alloc]initWithTitle:@"Compartir" image:[UIImage imageNamed:@"Compartir-Icon-Off.png"] tag:3]autorelease];

UITabBarController *tabBarController = [[UITabBarController alloc] initWithNibName:nil bundle:nil];
tabBarController.viewControllers = [[NSArray alloc] initWithObjects:firstViewController, secondViewController, thirdViewController, forthViewController, nil];
tabBarController.view.frame = self.view.frame;
[self.view addSubview:tabBarController.view];

[firstViewController release];
[secondViewController release];
[thirdViewController release];
[forthViewController release];
4

5 回答 5

6

您可以获得对视图控制器的引用navigationItem并设置其title.

[[aViewController navigationItem] setTitle:@"My Title"];

请注意,如果您还没有这样做,您需要将所有视图控制器嵌入到导航控制器中。这样,他们实际上将获得带有导航项的导航栏,而您不必自己绘制任何内容。

NSMutableArray *tabs = [NSMutableArray array];

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:firstViewController];
[tabs addObject:nav];
nav = [[UINavigationController alloc] initWithRootViewController:secondViewController];
[tabs addObject:nav];
...

[tabBarController setViewControllers:tabs];

编辑:您的标签栏控制器位于导航控制器内,因此您需要先获取对标签栏控制器的引用。试试你的视图控制器[[[self tabBarController] navigationItem] setTitle:...]viewDidLoad方法。

于 2012-07-17T05:54:06.653 回答
2

请转到 EventDetailViewController.m 并定义以下方法。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
    self.title = NSLocalizedString(@"Catalogues", @"Catalogues");
    //self.tabBarItem.image = [UIImage imageNamed:@"book"];

}
return self;
}

希望它会在每个 viewController.m 中定义上述初始化程序。

于 2012-07-17T06:07:07.240 回答
0

您不能为标签栏控件设置标题。您必须在每个视图控制器上使用 UINavigationBar

对于 UINavigationBar:将导航栏拖到您的 xib/nib 然后添加标题或以编程方式进行

于 2012-07-17T17:52:35.537 回答
0

通过将父导航项的引用传递给子视图控制器,我自己得到了解决方案。谢谢大家的帮助... :)

于 2012-07-18T05:20:18.883 回答
0

你不能设置导航栏的标题。在导航中设置视图或子视图的标题。self.title=@"欢迎"; 只需设置标题。

于 2012-07-27T18:18:06.207 回答