Skip to content

Latest commit

 

History

History
31 lines (23 loc) · 1.84 KB

view_injection.md

File metadata and controls

31 lines (23 loc) · 1.84 KB

Внедрение в subview и ячейки

Можно внедрять зависимости в subviews и ячейки UITableView или элементы UICollectionView.

В целях производительности, внедрение зависимостей по умолчанию отключено, чтобы им воспользоваться необходимо при регистрации контроллера явно указать наличие внедрения, вызвав функцию autoInjectToSubviews:

container.register(YourTableViewCell.self)
  .injection { cell, inject in cell.inject = inject }

container.register(YourView.self)
  .injection { view, inject in view.inject = inject }

container.register(YourViewController.self)
  .injection { vc, inject in vc.inject = inject }
  .autoInjectToSubviews() // Включает внедрение в дочерние view.


class YourViewController {
  @IBOutlet var myView: YourView!
  @IBOutlet var tableView: UITableView!
}

Помимо этого можно настроить автоматическое внедрение глобально (Не рекомендуется) с помощью DISetting:

DISetting.Defaults.injectToSubviews = true

После данной настройки нет необходимости включать внедрение в subviews для каждого контроллера в отдельности.

Внимание. Данный функционал замедляет скорость работы приложения. При грамотной архитектуре подобный функционал не нужен, так как во view должны приходить ViewModel-и и сама view-а не должна ничего грузить самостоятельно.