2013-09-27 5 views
8

Этот код работал хорошо до выхода iOS 7. Я назначаю UIViewController, с hidesBottomBarWhenPushed как YES, как rootViewControllerUINavigationController. Но TabBar показывается в любом случае. Вот соответствующий код:hidesBottomBarWhenPushed проигнорирован в iOS 7

Login *lv = [[Login alloc] init]; 
lv.HowToUseShows = showHowToUse; 
lv.hidesBottomBarWhenPushed = YES; 

UINavigationController *BokShelfNav = [[UINavigationController alloc] initWithRootViewController:lv]; 

//... 

UITabBarController *tbController = [[UITabBarController alloc] init]; 
tbController.viewControllers = @[BokShelfNav,...]; 

Любой, у кого есть аналогичная проблема?

+0

Вы устанавливаете HideBottomBarWhenPushed в YES. Это означает, что вы скрываете свою вкладку при представлении этого представления. Если вы хотите, чтобы ваша вкладка присутствовала, попробуйте удалить эту строку кода 'lv.hidesBottomBarWhenPushed = YES;'. – Priyatham51

+0

Извините @ Priyatham51 Я думаю, что я не прояснил ситуацию, проблема в том, что панель ** показывает **, и я хочу, чтобы она была скрыта. – Raspu

+1

Да, та же проблема, с которой я столкнулся с существующим кодом. –

ответ

23

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

Если я положил self.hidesBottomBarWhenPushed = YES; в метод viewDidLoad контроллера точки зрения, я нажимаю на панель вкладок. Если я переместил его на метод init, то панель вкладок скрывается, как и на iOS 6.

+0

Это, кажется, намного лучший способ решить эту проблему. Передала вам билет. – Raspu

+0

Это хорошо, если функция init фактически вызывается, но для моего UITableViewController, созданного раскадровкой, функция init не вызывается. – mdebeus

+1

'-initWithCoder:' будет вызываться вместо '-init' для объектов Interface Builder. – LucasTizma

2

Единственный способ решения проблемы я нашел, чтобы сделать tabBarController начать в другой вкладке ([tbController setSelectedIndex:1];), а затем, в viewWillAppear: методе этой вкладки ViewController сделать [tbController setSelectedIndex:0];

+0

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

+0

Да, действительно странная ошибка ... – Raspu

1

Я дал setSelectedIndex после нажимной высказывания и работал.

//created tabbar controller object 

if(index==0) 
    [tabbarcontroller setSelectedIndex:1]; 

[self.navigationcontroller pushViewcontroller:tabbarcontroller anmated:YES]; 
[tabbarcontroller setSelectedIndex:index]; 

Единственная проблема заключается в том, что вы показываете свой контроллер в 0-м индексе, в котором он будет отображаться. В этом случае я сначала установил индекс mt tabbarcontroller как 1 (отличный от 0). И его работа.

+0

Да, это тоже должно работать, возможно, оба ответа верны, поэтому я даю вам билет;). – Raspu

+0

Не могли бы вы рассказать о том, как вы это сделали? У меня есть пользовательский UITabBar и выбор другой вкладки и возврат не работает для меня ... – MichaelScaria

+0

MichaelScaria вы можете поделиться своими фрагментами кода здесь. –

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