Трудно ответить, не увидев больше кода, однако я считаю, что в MVP вы должны сконфигурировать свои контроллеры представления, используя Configurator
.
class FavouritesConfigurator {
func configureViewController(delegate: FavouritesSceneDelegate?) -> FavouritesViewController {
let viewController = FavouritesViewController()
let presenter = FavouritesPresenter(view: viewController)
presenter.delegate = delegate
viewController.setPresenter(presenter)
return viewController
}
}
Ваш метод запуска координатора должен просто вызвать FavouritesConfigurator
и вернуть ViewController
, настроенный вашим докладчиком и т. Д.
Вы можете использовать возвращаемое значение этого FavouritesConfigurator
для настройки ваших просмотров.
Это просто случай удаления каждой конфигурации представлений от метода запуска и непосредственного вызова этого конфигуратора. Это не нарушает никаких принципов, поскольку ваши компоненты по-прежнему изолированы, проверяемы и вызываются правильно.
Опять же, не видя ваш код, трудно быть точным, но попробуйте это:
let controllers = [FavouritesConfigurator().configureViewController(delegate: self),...,...]
tabBarController.viewControllers = controllers
Я думаю, что Вы ищете LSUIElement
в Info.plist
LSUIElement (Строка). Если этот ключ устанавливается к “1”, Launch Services запускает приложение как приложение агента. Приложения агента не появляются в Прикреплении или в окне Force Quit. Хотя они обычно работают как фоновые приложения, они могут прибыть в передний план для представления пользовательского интерфейса при желании.
Посмотрите краткое обсуждение здесь о превращении его вкл\выкл
Если Вы хотите сделать это пользовательской настройкой тогда, Вы не можете использовать UIElement. UIElement находится в комплекте приложений, Вы не должны редактировать ни один из файлов в комплекте приложений, поскольку это будет делать недействительным подпись пакетов.
лучшее решение, которое я нашел, основано эта превосходная статья . Мое решение основано на комментарии Dan. Короче говоря, нет никакого способа сделать это с Какао, но это возможно с крошечным битом Углеродного кода.
статья также предлагает делать вспомогательное приложение, которое обрабатывает значок панелей исключительно. Главное приложение тогда запускает и уничтожает это приложение в зависимости от пользовательских предпочтений. Этот подход, кажется мне, более устойчив, чем использование Углеродного кода, но я еще не попробовал его.