mvm_core_ui/MVMCoreUI/Organisms/MoleculeStackView.swift

45 lines
1.6 KiB
Swift

//
// MoleculeStackView.swift
// MVMCoreUI
//
// Created by Scott Pfeil on 2/11/19.
// Copyright © 2019 Verizon Wireless. All rights reserved.
//
import UIKit
open class MoleculeStackView: Stack<MoleculeStackModel> {
override var stackModel: MoleculeStackModel? {
get { return model as? MoleculeStackModel }
}
/// Convenience function, adds a molecule to a MoleculeStackItem to the MoleculeStack
func setup(with views: [View], lastItem: Bool) {
var models: [MoleculeStackItemModel] = []
for view in views {
guard let model = view.model else { return }
let stackItemModel = MoleculeStackItemModel(with: model)
let stackItem = MoleculeStackItem(andContain: view)
stackItems.append(stackItem)
models.append(stackItemModel)
}
if let stackModel = stackModel {
stackModel.molecules = models
} else {
model = MoleculeStackModel(molecules: models)
}
restack()
}
// MARK: - Adding to stack
/// Creates all of the stackItems for the stackItemModels
override func createStackItemsFromModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
guard let stackItemModels = stackModel?.molecules else { return }
for model in stackItemModels {
if let stackItem = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(model, delegateObject) as? MoleculeStackItem {
stackItems.append(stackItem)
}
}
}
}