Контроллер панели вкладок не отображается правильно - PullRequest
3 голосов
/ 27 февраля 2012

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

Однако, когда я запускаю автономную часть контроллера панели вкладок в качестве контроллера начального вида, он работает правильно, как показано на рисунке ниже:

enter image description here

Вот так выглядит приложение при запуске (правильное поведение):

enter image description here

Однако, когда я иду в этот контроллер панели вкладок из моего основного приложения, это выглядит так:

enter image description here

Мое главное приложение выглядит так:

Scroll View содержит

  • UIView 1
  • UIView 2
  • UIView 3
  • UIView x

Каждый просмотр делает что-то, что не связано с этим контроллером панели вкладок. Только одно представление x пытается «посетить» контроллер панели вкладок и отобразить там некоторые данные, но это не так. Есть идеи?

У меня установлен идентификатор контроллера панели вкладок для проверки, и вот как я это делаю, с моей точки зрения x:

UITabBarController *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"];
        [self.view addSubview:newViewController.view];

РЕДАКТИРОВАТЬ:

Полное приложение:

enter image description here

Я создаю представления программно. Вот почему у меня нет никаких отношений / переходов к контроллеру панели вкладок.

РЕШЕНИЕ:

Изменение:

UITabBarController *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"];
            [self.view addSubview:newViewController.view];

Кому:

UITabBarController *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"];
        [self addChildViewController:newViewController];
        [self.view addSubview:newViewController.view];

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Вам необходимо установить root viewController для контроллера навигации

1 голос
/ 27 февраля 2012

Просто не делайте это. От Apple UITabBarController референс

Поскольку класс UITabBarController наследуется от класса UIViewController, контроллеры панели вкладок имеют свое собственное представление, доступное через свойство view. При развертывании интерфейса панели вкладок вы должны установить это представление как корневой каталог вашего окна. В отличие от других контроллеров представления, интерфейс панели вкладок никогда не должен устанавливаться как дочерний элемент другого контроллера представления.

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

(Возможно, проблема смещения вида, которую вы встретили, может быть исправлена, однако она не будет соответствовать рекомендациям Apple и не будет рекомендована).

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