two typo fix

list and stack template required molecules
This commit is contained in:
Pfeil, Scott Robert 2019-06-28 13:34:15 -04:00
parent 98a5e33caf
commit 6fde7bc8b4
4 changed files with 52 additions and 11 deletions

View File

@ -218,7 +218,7 @@
__block BOOL newData = NO;
[pageTypesListeningFor enumerateObjectsUsingBlock:^(NSString * _Nonnull pageToListenFor, NSUInteger idx, BOOL * _Nonnull stop) {
NSDictionary *page = [pages dict:pageToListenFor];
NSString *pageType = [pages string:KeyPageType];
NSString *pageType = [page string:KeyPageType];
if (page && [pageType isEqualToString:self.pageType]) {
newData = [self newPageLoaded:page];
*stop = YES;

View File

@ -188,7 +188,7 @@ public class MoleculeStackView: ViewConstrainingView {
if let moleculeJSON = map.optionalDictionaryForKey(KeyMolecule) {
var view: UIView?
if let item = items?[index] {
item.update(with: moleculeJSON)
item.update(with: map)
view = item.view
(view as? MVMCoreUIMoleculeViewProtocol)?.setWithJSON(moleculeJSON, delegateObject: delegateObject, additionalData: nil)
addStackItem(item, lastItem: index == molecules.count - 1)

View File

@ -10,7 +10,22 @@ import UIKit
open class MoleculeListTemplate: ThreeLayerTableViewController {
var moleculesInfo: [(identifier: String, class: AnyClass, molecule: [AnyHashable: Any])]?
var observer: NSKeyValueObservation?
open override var loadObject: MVMCoreLoadObject? {
didSet {
if loadObject != oldValue {
updateRequiredModules()
observer?.invalidate()
if let newObject = loadObject {
observer = newObject.observe(\MVMCoreLoadObject.pageJSON, options: [.old, .new]) { [weak self] (object, change) in
self?.updateRequiredModules()
}
}
}
}
}
open override func viewForTop() -> UIView {
guard let moleculeJSON = loadObject?.pageJSON?.optionalDictionaryForKey("header"),
let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(forJSON: moleculeJSON, delegateObject: delegateObject() as? MVMCoreUIDelegateObject, constrainIfNeeded: true) else {
@ -128,12 +143,20 @@ open class MoleculeListTemplate: ThreeLayerTableViewController {
moleculesInfo = moleculeList
}
open override func requiredModules(fromPageJSON page: [AnyHashable : Any]?) -> [Any]? {
/// Adds modules from requiredModules() to the MVMCoreViewControllerMapping.requiredModules map.
open func updateRequiredModules() {
if let requiredModules = requiredModules(), let pageType = pageType {
MVMCoreViewControllerMappingObject.shared()?.addRequiredModules(toMapping: requiredModules, forPageType: pageType)
}
}
/// Gets modules required by the loadObject.pageJSON.
open func requiredModules() -> [Any]? {
let modules: NSMutableArray = []
let delegate = delegateObject() as? MVMCoreUIDelegateObject
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: page?.optionalDictionaryForKey("header"), delegateObject: delegate, moduleList: modules, errorList: nil)
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: page?.optionalDictionaryForKey("footer"), delegateObject: delegate, moduleList: modules, errorList: nil)
if let molecules = page?.optionalArrayForKey(KeyMolecules) as? [[AnyHashable: Any]] {
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: loadObject?.pageJSON?.optionalDictionaryForKey("header"), delegateObject: delegate, moduleList: modules, errorList: nil)
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: loadObject?.pageJSON?.optionalDictionaryForKey("footer"), delegateObject: delegate, moduleList: modules, errorList: nil)
if let molecules = loadObject?.pageJSON?.optionalArrayForKey(KeyMolecules) as? [[AnyHashable: Any]] {
for molecule in molecules {
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: molecule, delegateObject: delegate, moduleList: modules, errorList: nil)
}

View File

@ -9,6 +9,21 @@
import UIKit
public class MoleculeStackTemplate: ThreeLayerViewController {
var observer: NSKeyValueObservation?
open override var loadObject: MVMCoreLoadObject? {
didSet {
if loadObject != oldValue {
updateRequiredModules()
observer?.invalidate()
if let newObject = loadObject {
observer = newObject.observe(\MVMCoreLoadObject.pageJSON, options: [.old, .new]) { [weak self] (object, change) in
self?.updateRequiredModules()
}
}
}
}
}
public override func spaceBetweenTopAndMiddle() -> CGFloat? {
return 0
@ -50,17 +65,20 @@ public class MoleculeStackTemplate: ThreeLayerViewController {
return loadObject?.requestParameters?.modules
}
open override func requiredModules(fromPageJSON page: [AnyHashable : Any]?) -> [Any]? {
return modulesNeeded() as? [Any]
/// Adds modules from requiredModules() to the MVMCoreViewControllerMapping.requiredModules map.
open func updateRequiredModules() {
if let requiredModules = requiredModules(), let pageType = pageType {
MVMCoreViewControllerMappingObject.shared()?.addRequiredModules(toMapping: requiredModules, forPageType: pageType)
}
}
/// Gets the modules needed.
func modulesNeeded() -> NSMutableArray? {
/// Gets modules required by the loadObject.pageJSON.
open func requiredModules() -> [Any]? {
let modules: NSMutableArray = []
let delegate = delegateObject() as? MVMCoreUIDelegateObject
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: loadObject?.pageJSON?.optionalDictionaryForKey("header"), delegateObject: delegate, moduleList: modules, errorList: nil)
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: loadObject?.pageJSON?.optionalDictionaryForKey("footer"), delegateObject: delegate, moduleList: modules, errorList: nil)
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: loadObject?.pageJSON?.optionalDictionaryForKey("moleculeStack"), delegateObject: delegate, moduleList: modules, errorList: nil)
return modules.count > 0 ? modules : nil
return modules as? [Any]
}
}