2009-08-20 82 views
1

我有一个UITabBarController管理5个视图控制器。我在他们的“init”方法中创建它们的标签栏项目,以便它们将在视图加载之前显示。我只是想知道我该怎么做,因为似乎有很多方法。例如,对于我的DatePickerViewController:iPhone开发 - UIViewController标题,tabBarItem,标签

- (id)init { 
    if((self = [super init])) { 
     // ================ THIS ========================== 
     UIImage *clockIcon = [UIImage imageNamed:@"clockicon.png"]; 
     UITabBarItem *localTabBarItem = [[UITabBarItem alloc] 
       initWithTitle:@"Date" image:clockIcon tag:0]; 
     [self setTabBarItem:localTabBarItem]; 
     [localTabBarItem release]; 
     // ================ OR THIS ======================== 
     [self setTitle:@"Date"]; 
     UITabBarItem *localTabBarItem = [[UITabBarItem alloc] init]; 
     [localTabBarItem setImage:[UIImage imageNamed:@"clockicon.png"]]; 
     [self setTabBarItem:localTabBarItem]; 
     [localTabBarItem release]; 
     // ================ OR THIS ======================== 
     UITabBarItem *localTabBarItem = [[UITabBarItem alloc] init]; 
     [localTabBarItem setTitle:@"Date"]; 
     [localTabBarItem setImage:[UIImage imageNamed:@"clockicon.png"]]; 
     [self setTabBarItem:localTabBarItem]; 
     [localTabBarItem release]; 
    } 
    return self; 
} 

我应该怎样做?为什么tabBarItem和View Controller都有标题?我不认为我需要标签(在第一种方法中设置)。

谢谢!

+0

只是好奇,是否有一个原因,你不在IB设置? – 2009-08-20 20:59:32

+0

我不使用IB。 – mk12 2009-08-20 21:17:50

+0

我想那时你可能会走出困境。 – 2009-08-20 22:38:24

回答

1

在我看来,任何这些方法都可以,当你在一行中声明UIImage并将它设置在不同的行中而不是全部内联时,它可能会更易于阅读,但最终会得到相同的结果结果。

TabBarItems有一个标题,它将显示在标签栏项目iteself中的文本。视图控制器具有用于导航控制器目的的标题,视图控制器标题在设置时显示在NavigationControllers NavBar中。而且你确实需要标签,标签就是你在别人点击按钮时分开按钮的方式(当你自己管理TabBar时)。

+0

1:我没有管理标签栏,UITabBarController是。 2:viewController.title属性不适用于导航控制器,UIViewController的标题也有viewController.navigationItem.title属性。那么Controller的title属性是什么? – mk12 2009-08-20 20:40:44

+0

它的NavigationController知道什么标题显示在导航栏上时,它推动视图控制器(无论如何一个函数)。请阅读它在这里http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html它说更新导航栏 – Daniel 2009-08-20 20:43:29

+0

它说,我引用“如果没有自定义标题视图被设置,导航栏显示一个包含视图控制器默认标题的标签,这个标签的字符串通常从视图控制器本身的title属性中获得,如果你想显示与视图相关的标题控制器,而是设置视图控制器的导航项目的标题属性。“ – Daniel 2009-08-20 20:45:23

0

有几种方法来设置标题的原因是convienece。您可能希望在导航栏中显示一个标题并在标签栏中显示一个标题。

这实际上很常见,因为在标签栏中显示文本的空间较少。

像可可的许多事情一样,有多种方法可以做到这一点。你需要关注的唯一“正确性”是最适合你的情况。

+0

但是,*视图控制器的*标题有什么意义?如果标签栏项目和导航项目已经有自己的标题... – mk12 2009-08-21 04:06:53