#ios #swift #uitabbarcontroller
#iOS #быстрый #uitabbarконтроллер
Вопрос:
У меня есть приложение с панелью вкладок. Поскольку я добавил к нему 6 контроллеров просмотра, он был автоматически преобразован в 4 вкладки и контроллер «больше». Здесь приведен список из 2 оставшихся контроллеров просмотра.
Моя проблема в том, что когда я перехожу к одному из этих 2-х контроллеров просмотра, а затем снова нажимаю вкладку «Дополнительно», приложение завершает работу с потоком 1: «слой lt;CALayer: 0x2819c05e0gt; является частью цикла в дереве слоев».
Я предполагаю, что это связано с тем, что он пытается вставить MoreViewController внутрь уже существующего MoreViewController, однако я не уверен, как это исправить. Если бы кто-нибудь мог мне помочь, это было бы здорово.
Заранее спасибо.
Патрик
Ответ №1:
Хорошо.. поэтому мне удалось создать обходной путь.
В методе делегирования func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -gt; Bool
вы будете получать уведомления при каждом нажатии на элементы табуляции.
Я проверил, является ли выбранный viewController
moreNavigationController
. Затем if moreNavigationController.topViewController == (one of the two viewcontrollers listed in the MoreViewController) { moreNavigationController.popViewController(animated: true) }
Это предотвратит сбой приложения и вернет вас к просмотру таблицы контроллера MoreViewController. И все же это странное поведение. Но я просто рад, что он больше не ломается 🙂 Надеюсь, кто-нибудь найдет это полезным.