name reuse for molecules
arrow change for molecule cell
This commit is contained in:
parent
00252ebd69
commit
4bd5006e5e
@ -27,6 +27,9 @@
|
||||
/// For the molecule list to load more efficiently.
|
||||
+ (CGFloat)estimatedHeightForRow:(nullable NSDictionary *)json;
|
||||
|
||||
/// Allows the molecule to set its name for reuse. Default could be moleculeName.
|
||||
+ (nullable NSString *)nameForReuse:(nullable NSDictionary *)molecule delegateObject:(nullable MVMCoreUIDelegateObject *)delegateObject;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@ -200,6 +200,19 @@ public class MoleculeStackView: ViewConstrainingView {
|
||||
}
|
||||
}
|
||||
|
||||
public override static func name(forReuse molecule: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||
var name = ""
|
||||
guard let molecules = molecule?.optionalArrayForKey(KeyMolecules) else {
|
||||
return name
|
||||
}
|
||||
for case let item as [AnyHashable: AnyHashable] in molecules {
|
||||
if let moleculeName = item.stringOptionalWithChainOfKeysOrIndexes([KeyMolecule, KeyMoleculeName]) {
|
||||
name.append(moleculeName)
|
||||
}
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
// MARK: - Convenience Functions
|
||||
func clear() {
|
||||
MVMCoreUIStackableViewController.remove(contentView.subviews)
|
||||
|
||||
@ -119,6 +119,18 @@ import UIKit
|
||||
return estimatedHeightFor(moleculeJSON)
|
||||
}
|
||||
|
||||
public static func name(forReuse molecule: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||
if let molecule = molecule?.optionalDictionaryForKey(KeyMolecule),
|
||||
let moleculeName = molecule.optionalStringForKey(KeyMoleculeName),
|
||||
let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping[moleculeName] as? AnyClass,
|
||||
let castClass = moleculeClass as? MVMCoreUIMoleculeViewProtocol.Type,
|
||||
let nameFunc = castClass.name {
|
||||
return nameFunc(molecule, delegateObject)
|
||||
} else {
|
||||
return molecule?.optionalDictionaryForKey(KeyMolecule)?.optionalStringForKey(KeyMoleculeName)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Arrow
|
||||
/// Adds the standard mvm style caret to the accessory view
|
||||
public func addCaretViewAccessory() {
|
||||
@ -129,16 +141,12 @@ import UIKit
|
||||
let height: CGFloat = 10
|
||||
caretView = CaretView(lineThickness: CaretView.thin)
|
||||
caretView?.frame = CGRect(x: 0, y: 0, width: width, height: height)
|
||||
caretViewWidthSizeObject = MFSizeObject(scalingStandardSize: width)
|
||||
caretViewHeightSizeObject = MFSizeObject(scalingStandardSize: height)
|
||||
caretViewWidthSizeObject = MFSizeObject(standardSize: width, standardiPadPortraitSize: 9)
|
||||
caretViewHeightSizeObject = MFSizeObject(standardSize: height, standardiPadPortraitSize: 16)
|
||||
accessoryView = caretView
|
||||
}
|
||||
|
||||
// MARK: - MoleculeListCellProtocol
|
||||
public static func moleculeName(_ molecule: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||
return molecule?.optionalDictionaryForKey(KeyMolecule)?.optionalStringForKey(KeyMoleculeName)
|
||||
}
|
||||
|
||||
/// For when the separator between cells shows using json and frequency. Default is type: standard, frequency: allExceptTop.
|
||||
public func setSeparatorWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?, indexPath: IndexPath) {
|
||||
addSeparatorsIfNeeded()
|
||||
|
||||
@ -10,8 +10,6 @@
|
||||
|
||||
@protocol MoleculeListCellProtocol <NSObject>
|
||||
@optional
|
||||
/// Can override the molecule name for the given molecule. Otherwise we assume value for key moleculeName.
|
||||
+ (nullable NSString *)moleculeName:(nullable NSDictionary *)molecule delegateObject:(nullable MVMCoreUIDelegateObject *)delegateObject;
|
||||
|
||||
/// Can set the separator according to what the moleculeList commands.
|
||||
- (void)setSeparatorWithJSON:(nullable NSDictionary *)json delegateObject:(nullable MVMCoreUIDelegateObject *)delegateObject additionalData:(nullable NSDictionary *)additionalData indexPath:(nonnull NSIndexPath *)indexPath;
|
||||
|
||||
@ -117,7 +117,7 @@ open class MoleculeListTemplate: ThreeLayerTableViewController {
|
||||
guard let map = molecule.molecule, let moleculeName = map.optionalStringForKey(KeyMoleculeName), let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping[moleculeName] as? AnyClass else {
|
||||
return nil
|
||||
}
|
||||
if let moleculeClass = moleculeClass as? MoleculeListCellProtocol.Type, let moleculeNameFunc = moleculeClass.moleculeName {
|
||||
if let moleculeClass = moleculeClass as? MVMCoreUIMoleculeViewProtocol.Type, let moleculeNameFunc = moleculeClass.name {
|
||||
return (moleculeNameFunc(map, delegateObject() as? MVMCoreUIDelegateObject), moleculeClass)
|
||||
} else {
|
||||
return (moleculeName, moleculeClass)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user