generamba_templates/touchin-pagination/Code/View/view_controller.swift.liquid

85 lines
1.8 KiB
Plaintext
Executable File

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()
}
}