2009-03-01 4 views
3

У меня есть приложение на основе навигации, которое показывает TableView, в котором вы можете выбрать ячейку, и она приведет вас к «подробному представлению» для этой ячейки. Я хочу, чтобы у этого представления был таббар, в котором я могу выбрать один из трех подзонов. Я нашел несколько решений в Интернете для этого, но никто не очень полезен. Есть ли учебник для этого конкретно или их исходный код, указывающий, как это можно сделать? СпасибоНавигационное приложение с TabBar

ответ

6

В основном Что вам нужно сделать, это нажать контроллер просмотра табуляции в стек диспетчера диспетчера навигации.

Начиная со следующего шаблона «Навигационное приложение». Я добавил следующий метод в RootViewController.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
//Navigation logic may go here. Create and push another view controller. 
UIViewController *viewOneViewController = [[UIViewController alloc] init]; 
viewOneViewController.title = @"One"; 
viewOneViewController.view.backgroundColor = [UIColor redColor]; 

UIViewController *viewTwoViewController = [[UIViewController alloc] init]; 
viewTwoViewController.title = @"Two"; 
viewTwoViewController.view.backgroundColor = [UIColor orangeColor]; 

UIViewController *viewThreeViewController = [[UIViewController alloc] init]; 
viewThreeViewController.title = @"Three"; 
viewThreeViewController.view.backgroundColor = [UIColor greenColor]; 

UITabBarController *anotherViewController = [[UITabBarController alloc] init]; 
anotherViewController.viewControllers = [NSArray arrayWithObjects:viewOneViewController, viewTwoViewController, viewThreeViewController, nil]; 
[self.navigationController pushViewController:anotherViewController animated:YES]; 
[anotherViewController release]; 

}

Изменено это от 25 до теста:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return 25; 
} 

Теперь, когда я строю и бежать я буду видеть то, что вы ищете в основном. То, что вы захотите сделать после выполнения этой работы, - это изменить UIViewControllers на пользовательские подклассы, которые вы создаете для хранения кода для каждого вида. (Если вы также используете Interface Builder, измените init на initWithNibNamed :).

Надеюсь, это поможет вам немного поправиться.

+0

Вы также должны хотеть, чтобы создать пользовательский подкласс UITabBarController, в котором вы выделить его viewControllers, тот более чистым затем положить все, что в методе didSelectRow. Рядом с этим вы забыли некоторые релизы. Но все же + –

+0

, если мы не будем делать вкладки с xib, тогда .. ?? –

2

Вы должны знать, что возможно, что Apple отклонит ваше приложение, если вы это сделаете.

От «Объединяя Tab Bar и мореходства Контроллеры»

Очень часто, чтобы объединить панель вкладок и навигационные контроллеры, как показано на рисунке 4. Чтобы сделать это, вы просто добавляете навигационные контроллеры к контроллеру панели вкладок (однако вы никогда не должны добавлять контроллер панели вкладок в контроллер навигации).

Так что это, скорее всего, противоречит Руководству по человеческому интерфейсу, и поэтому вы можете отказаться.

1

Я пытаюсь сделать то же самое. Приложение «Tweetie» делает что-то подобное. У них есть TableView учетных записей, а затем вы выбираете учетную запись и появляется TabBar.

В любом случае, прямо из документации компании Apple:

pushViewController: анимированные: Помещает контроллер представления на стек приемника и обновляет экран.

  • (пустоты) pushViewController: (UIViewController *) ViewController анимированный: (BOOL) анимированные

Параметры ViewController Контроллер вид, который помещается в стек. Это не может быть экземпляр контроллера панели вкладок. Этот метод ничего не делает, если контроллер представления уже находится в стеке.

анимированный Установите это значение в YES, чтобы оживить переход. Передайте НЕТ, если вы настраиваете навигационный контроллер до отображения его вида.

Возможно, мы просто застряли, используя TabBar, а не TabBarController?

-JP

Смежные вопросы