Почему мой UITabBarController пуст? - PullRequest
0 голосов
/ 26 января 2010

Я создал UITabBarController следующим образом:

InfoViewController *iVC = [[InfoViewController alloc] init];
self.infoViewController = iVC; // retain property

UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemSearch tag:0];
self.infoViewController.tabBarItem = tabBarItem;





UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:myVC];
self.navigationController = nc;

UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemMostRecent tag:1];
self.navigationController.tabBarItem = tabBarItem;






UITabBarController *tbc = [[UITabBarController alloc] init];

NSArray* controllers = [NSArray arrayWithObjects:self.infoViewController, self.navigationController, nil];

self.tabBarController = tbc; // retain property!

self.tabBarController.viewControllers = controllers; [релиз ТБК];

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

Панель вкладок не показывает никаких элементов, она пуста.

В чем может быть проблема? Я не использую nib-файлы ... Нет предупреждений, нет ошибок, ничего не вошло в консоль. Просто пустая панель вкладок.

1 Ответ

1 голос
/ 26 января 2010

Разве вы не пропали:

self.tabBarController.viewControllers = controllers;

EDIT:

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

  1. Вы уверены, что self.tabBarController указывает на что-либо (не ноль)?
  2. Вы уверены, что он указывает на тот же UITabController, который вы видите?
  3. Вы уверены, что создаваемые контроллеры созданы правильно? Попробуйте отобразить их независимо от вкладки с помощью

    [self.tabBarController presentModalViewController: iVC animated: YES];

  4. UITabController создан из NIB? Если он установлен NSLog в initWithNibName или awakeFromNib, чтобы убедиться, что он вызывается перед вашим кодом, и не вызывается снова после вашего кода.

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

...