0

Я новичок прошивку, как мой проект зависит как навигацию и UITabBar controller.I сделали следующие шаги
UITabBar содержит 4 кнопки и панель навигации содержит 2 кнопки, т.е. является общим для всех экранов 1) сначала я взял контроллер UITabBar и добавил к нему четыре кнопки 2) Для каждой кнопки в UITabBar я добавил контроллер навигации Когда я нажимаю кнопки на вкладке, все виды отображаются хорошо и подходит к кнопкам UITabBar штриховой я столкнулся с проблемой, как показано нижеIOS: Показ UIViewControllers когда UITabBar и UINavigationBar кнопка cliked

предположит, что я нахожусь в UITabBar экрана «A» и я нажал на navigati на кнопке bar я получил экран навигации ex как «Navscreen», что означает, что теперь «A» содержит «Navscreen», когда я нажал кнопку «B» на панели инструментов и вернулся к кнопке UITabBar «A», все еще показывая «Navscreen»

Чтобы избежать подобных случаев в «Navscreen» вид контроллера я добавил код, как показано ниже в окне появится

-(void)tabBarController:(UITabBarController *)tabBarController 
    didSelectViewController:(UIViewController *)viewController 
{ 
    NSUInteger indexOfTab = [tabBarController.viewControllers 
    indexOfObject:viewController]; 
    NSLog(@"Tab index = %u (%u)", indexOfTab); 

    if (indexOfTab==0) 
    { 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" 
bundle:nil]; 
    FirstViewController *firstview = 
    (FirstViewController *) [storyboard 
    instantiateViewControllerWithIdentifier:@"home"]; 

    [self.navigationController pushViewController:firstview 
    animated:YES]; 

    } 
    else if (indexOfTab==1) 
{ 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" 
    bundle:nil]; 
    secondviewcontroller *secondview = 
    (secondviewcontroller *) [storyboard 
    instantiateViewControllerWithIdentifier:@"Medremainder"]; 
    [self.navigationController pushViewController:secondview animated:NO]; 

    } 
    if (indexOfTab==2) 
    { 

    UIStoryboard *storyboard = [UIStoryboard 
    storyboardWithName:@"Main" bundle:nil]; 
    mymedView *mymed_view = 
    (mymedView *) [storyboard 
instantiateViewControllerWithIdentifier:@"mymed"]; 
    [self.navigationController pushViewController:mymed_view 
    animated:NO]; 
     } 

if (indexOfTab==3) 
{ 

    UIStoryboard *storyboard = [UIStoryboard 
    storyboardWithName:@"Main" bundle:nil]; 
    Event_view *event_view = 
    (Event_view *) [storyboard 
    instantiateViewControllerWithIdentifier:@"Event_view"]; 
    [self.navigationController pushViewController:event_view 
    animated:NO]; 

    } 
} 

Но в этом случае нажмите «Navscreen» его работы, и когда я нажимаю UITabBar " B "iam может получить экран UITabBar. Если я снова нажму UITabBar" A ", я смогу увидеть« A », и когда я нажму кнопку UITabBar« B », произойдет сбой. AS я новичок в ios, пожалуйста, помогите мне с возможным решение, если я сделаю что-нибудь неправильное заявление предлагайте правильные решения.

+0

Ваше описание проблемы не очень чистый, но я подозреваю, что вы пытаетесь использовать TabBar и навигации контроллеры в неправильном направлении. Проверьте https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/CombiningViewControllers.html –

+0

да IAM, используя обе навигационные и TabBar контроллеры. мне нужно, чтобы получить tabscrees, когда я нажал на кнопки TabBar щелкает .Но некоторые из экранов, показывающими Previouly используются Панель навигации экранов, что моя проблема –

ответ

0

В вашем didSelectViewController: вы, кажется, несколько раз нажимаете новые контроллеры на self.navigationController? Каждый раз, когда вы выбираете вкладку, этот код будет подталкивать другой контроллер, загруженный из раскадровки, поверх того, что уже существует. Вероятно, это то, что испортило ваши навигационные элементы.

Если вы не только быть выделение отдельных навигационных контроллеров раз на каждую вкладку, так что это все автоматическое?

В раскадровке/код выделить отдельные элементы навигации для каждой вкладки. В каждом контроллере навигации создайте его с помощью корневого контроллера на основе того, что вы загружаете из раскадровки для каждой вкладки. Вам нужно только создать это где-то в своем главном контроллере. Затем выделите навигационные контроллеры для разделения вкладок в раскадровке или в коде, чтобы массив контроллеров был массивом ваших созданных навигационных контроллеров.

Все должно быть автоматическим, если вам не понадобится реализовать didSelectViewController:, поскольку каждая вкладка просто приведет к отображению соответствующего навигационного контроллера и соответствующей навигационной панели.

+0

в моем сделали закончить запускающий я добавил код, как у сказал, но ничего IAM не получает. Но как и сказал, что то же самое происходит в моем случае –

+0

Можете ли вы опубликовать код? Если вы делаете все это в раскадровке, вам не нужен какой-либо код для настройки вкладок и их контроллеров. Вы используете раскадровки или делаете это вручную? В любом случае вам нужно увидеть код, раскадровку или и то, и другое. –

+0

iam using story board Я взял контроллер табло и добавил четыре кнопки на вкладке и добавил четыре навигационных контроллера к каждой кнопке и четыре вида s каждому контроллеру навигации. –

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