В итоге я обошел это, не используя UITabBarController
, вместо этого создав CustomTabBarController, который наследует от UIViewController
. Пользовательский контроллер имеет UITabBar
в нижней части его вида и несколько других UIViewController
s, встроенных в Container Views. Пользовательский контроллер устанавливает для свойства isHidden
значение true
для всего встроенного контроллера просмотра кроме тот, который соответствует выбранной вкладке.
Ниже приведен простой пример с двумя закладками, которые были определены их тегом:
class CustomTabBarController: UIViewController, UITabBarDelegate {
@IBOutlet weak var tab1View: UIView!
@IBOutlet weak var tab2View: UIView!
@IBOutlet weak var tabBar: UITabBar!
override func viewDidLoad() {
tabBar.delegate = self
}
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
tab1View.isHidden = item.tag != 1
tab2View.isHidden = item.tag != 2
}
}
Этот пользовательский контроллер должен быть установлен в корне UINavigationController
, которая сама по себе должна быть установлена в качестве главного контроллера из Split View Controller:
Эта установка работает как для IPad и iPhone:
Там являются несколько недостатков этого метода:
Обычай вкладка Контроллер является менее легко работать - добавление новая вкладка требует, чтобы вы добавили еще один встроенный просмотр и подключили его к розетке в элементе управления э.
Установка элементов навигационного элемента и элементов панели слева и справа должна выполняться в пределах настраиваемого контроллера панели вкладок при выборе вкладки.
Этот метод использует (я думаю) больше памяти, чем обычный UITabBarController
, так как все контроллеры дочерних представлений загружаются, как только приложение загружается, а не когда они отображаются в первый раз.
Эта настройка приведет к тому, что панель вкладок будет скрыта, если в режиме (портрет) iPhone отображается подробная информация. Это было то, что нужно I, а также поведение в приложении Facebook Messenger, но если вы хотите, чтобы панель вкладок была постоянно виден, этот метод не будет делать этого.
Вы можете найти некоторую информацию по этому вопросу здесь: –
Lasse1234
@Zeezer как вы в конечном итоге решить это? – SAHM
@SAHM Не удалось решить проблему, переработал мой поток. Если вы найдете решение, которое работает как для iPad, так и для iPhone, отправьте его, и я его приму. благодаря – Zeezer