Wednesday, October 21, 2026
HomeiOS Developmentios - The proper approach of making a configurator utilizing VIP structure...

ios – The proper approach of making a configurator utilizing VIP structure Swift

[ad_1]

I attempt to introduce VIP structure to my mission and don’t absolutely perceive the examples that I discover, I comply with this information https://www.netguru.com/weblog/clean-swift-ios-architecture-pattern, and study the supply code inside I’m confused in regards to the thought behind, that is the reusable thought of a creating this element or one of many approach methods to construct this element?
Instance:

// Scene Manufacturing facility

protocol SceneFactory {
    var configurator: LoginSceneConfigurator! { get set }
    func makeLoginScene() -> UIViewController
}

remaining class DefaultSceneFactory: SceneFactory {
    var configurator: LoginSceneConfigurator!
    
    func makeLoginScene() -> UIViewController {
        let vc = LoginSceneViewController()
        return configurator.configured(vc)
    }

// Configurator

protocol LoginSceneConfigurator {
    func configured(_ vc: LoginSceneViewController) -> LoginSceneViewController
}

remaining class DefaultLoginSceneConfigurator: LoginSceneConfigurator {
    non-public var sceneFactory: SceneFactory
    
    init(sceneFactory: SceneFactory) {
        self.sceneFactory = sceneFactory
    }
    
    @discardableResult
    func configured(_ vc: LoginSceneViewController) -> LoginSceneViewController {
        sceneFactory.configurator = self
        let service = DefaultAuthService(
            networkManager: DefaultNetworkManager(session: MockNetworkSession())
        )
        let authWorker = LoginSceneAuthWorker(service: service)
        let interactor = LoginSceneInteractor()
        let presenter = LoginScenePresenter()
        let router = LoginSceneRouter(sceneFactory: sceneFactory)
        router.supply = vc
        presenter.viewController = vc
        interactor.presenter = presenter
        interactor.authWorker = authWorker
        vc.interactor = interactor
        vc.router = router
        return vc
    }
}

In my case, I exploit a easy little development and do not know if that is the right approach or not, after I copy the thought and attempt to implement it in my mission, this doesn’t work. I’ve additionally hooked up the supply code of my mission on google https://drive.google.com/file/d/1DcTxDXNl8idp2C3HLs5ggixdRVTE1UGY/view?usp=sharing
My instance:

protocol HomeViewProtocol {
    func reloadView(_ bucketLists: [TestData])
    func showSearchResult(end result: String)
    func progressState()
}

extension HomeViewController: HomeViewProtocol {
    func progressState() {
        views?.loader.startAnimating()
    }
    
    func showSearchResult(end result: String) {
        router?.showSearchMsg(end result)
        views?.loader.stopAnimating()
    }
    
    func reloadView(_ bucketLists: [TestData]) {
        self.bucketLists = bucketLists
        views?.label.textual content = bucketLists.final?.title
    }
}

class HomeViewController: UIViewController {
    
    non-public var bucketLists: [TestData] = []
    
    var interactor: HomeInteractorProtocol?
    var router: HomeViewControllerRouter?
    var views: HomeViewContollerViews?
    
    override func viewDidLoad() {
        tremendous.viewDidLoad()
        configurator()
        
        views?.setupUI()
        views?.setupConstraint()
        views?.setupNavigationControllerElemenst()
        
    }
    
    non-public func configurator() {
        let searchWorker: HomeViewControllerSearchWorkerProtocol = HomeViewControllerSearchWorker()
        
        var presenter: HomePresenterProtocol = HomePresenter()
        presenter.viewController = self
        
        interactor = HomeInteractor()
        interactor?.presenter = presenter
        interactor?.searchWorker = searchWorker
        
        router = HomeViewControllerRouter()
        router?.supply = self
        views = HomeViewContollerViews()
        views?.supply = self
        
    }
}

[ad_2]

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments