45 lines
1.6 KiB
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)
|
|
}
|
|
}
|
|
}
|
|
}
|