2009-08-20 3 views
1

У меня есть UITabBarController, который управляет 5 контроллерами View. Я создаю их элементы панели табуляции в своих методах «init», чтобы они отображались перед загрузкой представления. Мне просто интересно, как я должен это делать, потому что, похоже, так много способов. Например, для моего DatePickerViewController:iPhone dev - UIViewController title, tabBarItem, tag

- (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? –

+0

Я не использую IB. – mk12

+0

Я думаю, тогда вы, возможно, сойдете с пути, чтобы усложнить его. –

ответ

1

Ну, на мой взгляд, любой из этих способов в порядке, он может быть более понятным, когда вы объявляете UIImage в одной строке и устанавливаете его в другой строке, а не делаете все это встроенным, но в конце вы получаете то же самое результат.

Элементы TabBarItems имеют заголовок, который является текстом, который будет отображаться в элементе панели вкладок. У контроллеров View есть заголовок для целей контроллера навигации, заголовок View Controllers отображается в навигационной навигационной панели NavBar при установке. И вам нужны теги, теги - это то, как вы говорите кнопкам отдельно, когда кто-то нажимает на них (когда вы сами управляете TabBar).

+0

1: Я не управляю панелью вкладок, UITabBarController. 2: свойство viewController.title не для навигационных контроллеров, у UIViewController также есть свойство viewController.navigationItem.title для заголовка. Итак, каково свойство title для представления Controller? – mk12

+0

его для NavigationController, чтобы узнать, какой заголовок отображать на панели навигации, когда он нажимает на контроллер вида (в любом случае одна функция). Прочтите его здесь http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html, где говорится: «Обновление панели навигации» – Daniel

+0

В ней говорится, и я цитирую «Если нет специального заголовка view, на панели навигации отображается метка, содержащая заголовок по умолчанию контроллера представления. Строка для этого ярлыка обычно получается из свойства title самого контроллера представления. Если вы хотите отобразить другой заголовок, отличный от заголовка, связанного с представлением контроллер, вместо этого задайте свойство title элемента навигации контроллера вида. " – Daniel

0

Причина есть несколько способов установить заголовок для convienece. Вы можете отобразить один заголовок на панели навигации и один заголовок на панели вкладок.

Это на самом деле довольно распространено, поскольку на панели вкладок меньше места для отображения текста.

Как и многие вещи в Какао, существует более чем один способ сделать это. Единственная «правильность», о которой вам нужно беспокоиться, - это то, что лучше всего подходит для вашей ситуации.

+0

Но тогда в чем смысл заголовка * View Controller *? Если элемент панели вкладок и элемент навигации уже имеют свой собственный заголовок ... – mk12