import UIKit import LeadKit import TableKit import RxSwift import RxCocoa final class {{ module_info.name }}ViewController: UIViewController { let viewModel: {{ module_info.name }}ViewModel init(viewModel: {{ module_info.name }}ViewModel) { self.viewModel = viewModel super.init(nibName: nil, bundle: nil) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } @IBOutlet private weak var tableView: UITableView! private lazy var tableDirector = TableDirector(tableView: tableView) private lazy var paginationWrapper = { PaginationWrapper(wrappedView: AnyPaginationWrappable(view: tableView), cursor: viewModel.cursor, delegate: self) }() // MARK: - View Life Cycle override func viewDidLoad() { super.viewDidLoad() initialLoadView() } } extension {{ module_info.name }}ViewController: ConfigurableController { func bindViews() { paginationWrapper.reload() } func configureAppearance() { <#code#> } func addViews() { <#code#> } func configureBarButtons() { <#code#> } func localize() { <#code#> } } extension {{ module_info.name }}ViewController: PaginationWrapperDelegate { typealias DataSourceType = {{ module_info.name }}Cursor func paginationWrapper(didLoad newItems: DataSourceType.ResultType, using dataSource: DataSourceType) { tableDirector.append(rows: <#T##[Row]#>) } func paginationWrapper(didReload allItems: DataSourceType.ResultType, using dataSource: DataSourceType) { tableDirector.replace(withRows: <#T##[Row]#>) } func clearView() { tableDirector.safeClear() } }