-2

Мое приложение имеет #hashtags, который можно выбрать.Выбор элемента Tabbar в iOS

У нас есть только 3 вкладки в наших TabBar, MainVC, ProfileVC и TagVC. TagDetailVC обычно доступен через TagVC.

Когда пользователь выбирает тег, она будет направлена ​​в TagDetailViewController.

EDIT Я подключил tabbarController на раскадровке.

Сейчас у меня есть это:

TagDetailViewController *dest = [[TagDetailViewController alloc] init]; 
UINavigationController *nav = [self.tabBarController.viewControllers objectAtIndex:2]; 
[nav pushViewController:dest animated:YES]; 

Однако все, что я вижу прямо сейчас TagVC. Я поместил журнал в оператор viewDidLoad в TagDetailVC, и он не показывался.

Для записи, это то, как организована моя история плата:

TabBarController -> NavigationVC -> MainVC ... 
       -> NavigationVC -> ProfileVC ... 
       -> NavigationVC -> TagVC -> TagDetailVC 

Я заинтересован иметь TabBar выбрать TagVC, а затем нажмите TagDetailVC на navigationController из TagVC. Поведение, которое я ожидаю, когда пользователь нажимает тег: 1. Табль выбран в TagVC 2. TagDetailVC помещается в NavigationVC TagVC.

Что я делаю неправильно?

+0

UINavigationController * nav = [self.tabBarController.viewControllers objectAtIndex: 2]; [nav pushViewController: dest animated: YES]; вместо этого непосредственно писать TagDetailViewController * dest = [[TagDetailViewController alloc] initWithNibName: @ "TagDetailViewController" bundle: nil]; [self.navigationController pushViewController: dest анимированный: ДА] –

+0

Что не так с созданием панели вкладок в IB и поставьте navcontrollers, содержащие регулярные В нем есть подробности? Возможно, я неправильно понял, но это, кажется, ваша цель, и это нормальная структура для приложения и может быть выполнена без специального кода. –

+0

@Manobar, который не меняет индекс вкладок. Если у меня есть код для изменения tabIndex, нажатие будет недействительным – disappearedng

ответ

1

Вы можете использовать ниже метод для UITabbarController:

[tabBarController setSelectedIndex:2]; 

Согласно моему пониманию это было бы: NavigationVC -> TagVC

Теперь используйте NSNotification и нажмите вид контроллер TagDetailVC.

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

+0

вы можете объяснить, почему NSNotification необходимо? – disappearedng

+0

, когда вы выберете вкладку в контроллере tabbar, она приведет вас к определенному контроллеру навигации, назначенному этому индексу (который является TagVC в вашем случае). Но в вашем требовании вы хотите перейти на один шаг дальше, чтобы перейти к следующему VC (TagDetailVC). Для этого вы можете использовать NSNotification, которая реализована в TagVC, и это будет pushViewController для TagDetailVC. Дайте мне знать, если вы получите мою точку зрения или нет. – Mrunal

0

Я бы попытаться что-то вроде этого (псевдокод):

on tagTapped 
    tagDetailViewController = (alloc, config TagDetailVC) 
    (tab controller).viewControllers[2].viewControllers = @[ new TagVC, tagDetailViewController ] ; 
    (tab controller).selectedIndex = 2 
0

Каким-то образом это работает.

self.tabBarController.selectedIndex = TAB_INDEX_TAGS; 
UINavigationController *nav = [self.tabBarController.viewControllers objectAtIndex:2]; 
[nav pushViewController:dest animated:YES]; 
Смежные вопросы