From d336b8dfda6a0e40572816b37be3394d7b2c66df Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 22 Aug 2024 15:11:12 -0500 Subject: [PATCH] trying to deal with rendering issues Signed-off-by: Matt Bruce --- VDS/BaseClasses/Selector/SelectorBase.swift | 4 +++- VDS/BaseClasses/Selector/SelectorGroupBase.swift | 3 ++- VDS/BaseClasses/Selector/SelectorItemBase.swift | 3 ++- VDS/Components/RadioBox/RadioBoxItem.swift | 3 ++- VDS/Protocols/ViewProtocol.swift | 11 +++++++++++ 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/VDS/BaseClasses/Selector/SelectorBase.swift b/VDS/BaseClasses/Selector/SelectorBase.swift index 6af003fd..2d12cf07 100644 --- a/VDS/BaseClasses/Selector/SelectorBase.swift +++ b/VDS/BaseClasses/Selector/SelectorBase.swift @@ -30,7 +30,9 @@ public protocol SelectorControlable: Control, Changeable { /// Base Class used to build out a Selector control. @objcMembers @objc(VDSSelectorBase) -open class SelectorBase: Control, SelectorControlable { +open class SelectorBase: Control, SelectorControlable, ParentViewProtocol { + public var children: [any ViewProtocol] { [selectorView] } + //-------------------------------------------------- // MARK: - Initializers //-------------------------------------------------- diff --git a/VDS/BaseClasses/Selector/SelectorGroupBase.swift b/VDS/BaseClasses/Selector/SelectorGroupBase.swift index e04b5e5a..ebb0512b 100644 --- a/VDS/BaseClasses/Selector/SelectorGroupBase.swift +++ b/VDS/BaseClasses/Selector/SelectorGroupBase.swift @@ -39,7 +39,8 @@ extension SelectorGroupSingleSelect { } /// Base Class used for any Grouped Form Control of a Selector Type. -open class SelectorGroupBase: Control, SelectorGroup, Changeable { +open class SelectorGroupBase: Control, SelectorGroup, Changeable, ParentViewProtocol { + public var children: [any ViewProtocol] { items } //-------------------------------------------------- // MARK: - Private Properties diff --git a/VDS/BaseClasses/Selector/SelectorItemBase.swift b/VDS/BaseClasses/Selector/SelectorItemBase.swift index ea037771..d2ccc293 100644 --- a/VDS/BaseClasses/Selector/SelectorItemBase.swift +++ b/VDS/BaseClasses/Selector/SelectorItemBase.swift @@ -11,7 +11,8 @@ import Combine import VDSCoreTokens /// Base Class used to build out a SelectorControlable control. -open class SelectorItemBase: Control, Errorable, Changeable, Groupable { +open class SelectorItemBase: Control, Errorable, Changeable, Groupable, ParentViewProtocol { + public var children: [any ViewProtocol] { [label, childLabel, errorLabel, selectorView] } //-------------------------------------------------- // MARK: - Initializers diff --git a/VDS/Components/RadioBox/RadioBoxItem.swift b/VDS/Components/RadioBox/RadioBoxItem.swift index a5ca1d8b..b8530363 100644 --- a/VDS/Components/RadioBox/RadioBoxItem.swift +++ b/VDS/Components/RadioBox/RadioBoxItem.swift @@ -14,7 +14,8 @@ import VDSCoreTokens /// that are used within a ``RadioBoxGroup``. @objcMembers @objc(VDSRadioBoxItem) -open class RadioBoxItem: Control, Changeable, FormFieldable, Groupable { +open class RadioBoxItem: Control, Changeable, FormFieldable, Groupable, ParentViewProtocol { + public var children: [any ViewProtocol] { [textLabel, subTextLabel, subTextRightLabel, selectorView] } //-------------------------------------------------- // MARK: - Initializers diff --git a/VDS/Protocols/ViewProtocol.swift b/VDS/Protocols/ViewProtocol.swift index 9a509dc1..b282062a 100644 --- a/VDS/Protocols/ViewProtocol.swift +++ b/VDS/Protocols/ViewProtocol.swift @@ -9,6 +9,10 @@ import Foundation import UIKit import Combine +public protocol ParentViewProtocol { + var children: [any ViewProtocol] { get } +} + public protocol ViewProtocol: AnyObject, Initable, Resettable, Enabling, Surfaceable, AccessibilityUpdatable { /// Set of Subscribers for any Publishers for this Control. var subscribers: Set { get set } @@ -38,8 +42,15 @@ extension ViewProtocol { public func setNeedsUpdate() { if shouldUpdateView { shouldUpdateView = false + //let parent = self as? ParentViewProtocol + //parent?.children.forEach{ $0.shouldUpdateView = false } updateView() updateAccessibility() +// parent?.children.forEach{ +// $0.updateView() +// $0.updateAccessibility() +// $0.shouldUpdateView = true +// } shouldUpdateView = true } }