Больше изображений NavigationController исчезают при выборе - PullRequest
2 голосов
/ 20 сентября 2010

У меня есть UITabBarController, который был создан программно, который имеет 6 вкладок. Таким образом, автоматически создается MoreNavigationController, чтобы иметь более 5 вкладок. Все выглядит нормально, когда отображается MoreNavigationController, но когда я выбираю одну из этих строк, чтобы поместить контроллер представления в стек, изображение ячейки (изображение панели вкладок) исчезает. Когда я открываю этот контроллер вида, изображение остается скрытым до тех пор, пока не будет завершена анимация всплытия, после чего изображение неожиданно появится снова.

Это довольно старый код, и я бы так не делал в наши дни, но все работает, кроме этой последней мелочи, поэтому я не решаюсь вырвать весь код и сделать это другим способом. Кто-нибудь может подсказать, что я могу делать не так?

Пример создания одного из контроллеров представления панели вкладок:

InfoViewController* infoViewController = [[InfoViewController alloc] init];
infoViewController.tabBarItem.image = [UIImage imageNamed:@"90-life-buoy.png"];
infoViewController.tabBarItem.title = @"More Info";
infoViewController.title = @"More Info";
UINavigationController* infoNavController = [[UINavigationController alloc] initWithRootViewController:infoViewController];
[infoViewController release];

Создание панели вкладок:

tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:outdoorsNavController, peopleNavController, citiesNavController, landscapesNavController, infoNavController, basicsNavController, nil];
[window addSubview:tabBarController.view];

РЕДАКТИРОВАТЬ: Кажется, не имеет никакого значения, использую ли я изображения сетчатки (@ 2x) или нет.

Ответы [ 3 ]

4 голосов
/ 27 октября 2014

Проблема заключается в том, что вы упаковываете InfoViewController в UINavigationController.

Когда вы щелкаете по строке таблицы в MoreNavigationController, контроллер использует tabBarItem в UINavigationControllerв то время как он делает свой переход.Поскольку это ноль (в вашем коде), изображение в MoreNavigationController исчезает.Когда переход наконец завершится, MoreNavigationController подберет tabBarItem в InfoViewController

Попробуйте:

InfoViewController* infoViewController = [[InfoViewController alloc] init];
infoViewController.tabBarItem.image = [UIImage imageNamed:@"90-life-buoy.png"];
infoViewController.tabBarItem.title = @"More Info";
infoViewController.title = @"More Info";
UINavigationController* infoNavController = [[UINavigationController alloc] initWithRootViewController:infoViewController];
//Set the tabBarItem for UINavigationController
infoNavController.tabBarItem = infoViewController.tabBarItem
[infoViewController release];

Вот видео, воспроизводящее и устраняющее проблему: пункт 7пусто tabBarItem.image, в то время как пункт 6 имеет tabBarItem.image набор

0 голосов
/ 27 октября 2014

Не уверен, правильно ли я понимаю, но на моей голове вот несколько советов (пункт «Панель вкладок« Больше »не должен исчезать постоянно, он создается автоматически)

  1. Вы пытались создать подкласс для своего UINavigationController, который используется для места MoreController, и установить там свойства его элементов панели вкладок, поэтому убедитесь, что у вас есть контроль над его временем жизни?

  2. Подклассы ваших UIViewController, которые вы хотите поместить в стек навигации, и заставить их использовать тот же элемент панели вкладок?

  3. Извлеките функциональность по умолчанию, создайте свой собственный UITableViewController, который будет выступать в качестве дополнительного контроллера, и при каждом нажатии строк выполняйте то, что вы хотите, также в пользовательском порядке.

PS: попробуйте установить имя изображения без расширения .png. Таким образом, вы автоматически загрузите ресурс @ 2x. Например: [UIImage imageNamed: @ "90-спасательный круг"]

Ссылка

0 голосов
/ 20 сентября 2010

Не уверен, но вы пробовали установить NavigationCotroller's .tabBarItem?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...