Сбой контроллера Swift «Больше»

#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. И все же это странное поведение. Но я просто рад, что он больше не ломается 🙂 Надеюсь, кто-нибудь найдет это полезным.