FxForm
public class FxForm<E:Hashable> : FxBase, Sequence
Reactive class that controls binding specific FxField’s to specifc views.
-
Initializes an FxForm.
let fields = viewModel.setup(contact: contact) form = FxForm(fields, viewController: self, scrollView: scrollView)Declaration
Swift
public init(_ fields: FxFields<E>, viewController: UIViewController, scrollView: UIScrollView? = nil)Parameters
fieldsList of fields to be bound.
viewControllerUIViewController that contains the form and the @IBOutlet’s to be bound to the form.
scrollViewUIScrollView to be managed, if any.
-
Convenience method to clear all of a form’s bound fields. Will not clear unbound field values.
Declaration
Swift
public func clear()
-
Returns FxField
with the given id. Note that this field is returned from the managed fields list and may not neccesarily be bound to any particular view or control. Declaration
Swift
public subscript(_ id: E) -> FxField<E>?
-
Returns iterator that will sequence through all bound FxField
‘s in tab order. Declaration
Swift
public func makeIterator() -> FxFormIterator<E>
-
Runs through our list of fields and returns the current responder, if any.
Declaration
Swift
public func currentResponder() -> UIView? -
Undocumented
Declaration
Swift
public func doneEditing() -
Gets the current responder and tabs to the next available responder. If none found resigns current responder.
Declaration
Swift
public func tabNext() -
Gets the current responder and tabs to the next previous responder. If none found resigns current responder.
Declaration
Swift
public func tabPrevious()
-
Adds a hide keyboard tap gesture handler to the specified view.
form.autoBind() .addHideKeyboardGesture()If no view is specified the gesture is added to the scrollview or if that doesn’t exist, to the view controller’s view.
Declaration
Swift
public func addHideKeyboardGesture(_ view: UIView? = nil) -> FxForm<E>
-
Sets up fields to automatically validate when any change is made.
Declaration
Swift
public func autoValidateOnChange() -> FxForm<E>Return Value
Self for further configuration.
-
Sets up fields to automatically validate when user leaves its associated textfield or any change is made.
Declaration
Swift
public func autoValidateOnChangeOrExit() -> FxForm<E>Return Value
Self for further configuration.
-
Sets up fields to automatically validate when user leaves its associated textfield.
Declaration
Swift
public func autoValidateOnExit() -> FxForm<E>Return Value
Self for further configuration.
-
Undocumented
Declaration
Swift
public func isValid() -> Bool
-
Core function used to bind specific FxField’s to specific views.
form.bind(.state, .stateTextField) .bind(.zip, zipCodeTextField) .bind(.text, displayTextField) { _ in return [.viewToField, .error] }Field values are automatially bound to textfields and other controls using the
FxBindableValueprotocol.Note that the order in which fields are bound controls the tab order.
Declaration
Swift
public func bind(_ id: E, _ view: UIView, _ custom: ((FxField<E>) -> [FxFieldBindings])? = nil) -> FxForm<E>Parameters
idId of FxField to bind.
viewTextfield or other control to bind to specified FxField.
customOptional function which allows custom bindings and/or controlling which bindings are performed automatically.
Return Value
Self for additonal bindings or configuration.
-
Convenience method to bind the specified FxField’s error message to a specfifc label.
form.autoBind() .bindError(.zip, zipErrorLabel)Declaration
Swift
public func bindErrorMessage(_ id: E, _ label: UILabel?) -> FxForm<E>Parameters
idId of FxField to bind.
labelUILabel to receive message.
Return Value
Self for additonal bindings or configuration.
-
Convenience method to bind the specified FxField’s isEnabled flag to a specfifc control.
form.autoBind() .bindIsEnabled(.zip, zipTextField)Declaration
Swift
public func bindIsEnabled(_ id: E, _ view: UIView?) -> FxForm<E>Parameters
idId of FxField to bind.
labelControl to receive flag.
Return Value
Self for additonal bindings or configuration.
-
Convenience method to bind the specified FxField’s isHidden flag to a specfifc view.
form.autoBind() .bindIsHidden(.zip, zipStackView)Declaration
Swift
public func bindIsHidden(_ id: E, _ view: UIView?) -> FxForm<E>Parameters
idId of FxField to bind.
labelView to receive flag.
Return Value
Self for additonal bindings or configuration.
-
Convenience method to bind the specified FxField’s title to a specfifc label.
form.autoBind() .bindTitle(.zip, zipLabel)Declaration
Swift
public func bindTitle(_ id: E, _ label: UILabel?) -> FxForm<E>Parameters
idId of FxField to bind.
labelUILabel to receive title.
Return Value
Self for additonal bindings or configuration.
-
Convenience method to bind the specified FxField’s value to a specfifc button.
form.autoBind() .bindValue(.zip, zipLabel)Declaration
Swift
public func bindValue(_ id: E, _ button: UIButton?) -> FxForm<E>Parameters
idId of FxField to bind.
labelUILabel to receive title.
Return Value
Self for additonal bindings or configuration.
-
Convenience method to bind the specified FxField’s value to a specfifc label.
form.autoBind() .bindValue(.zip, zipLabel)Declaration
Swift
public func bindValue(_ id: E, _ label: UILabel?) -> FxForm<E>Parameters
idId of FxField to bind.
labelUILabel to receive title.
Return Value
Self for additonal bindings or configuration.
-
Performs automated binding of managed fields and views.
This method walks the list of managed fields and searches the view controller’s IBOutlets for views whose names match
field.key + suffix.If found, the field is automatically bound to that view.
form.autoBind()Note that tab order is controlled by IBOutlet order in the UIViewController.
If a different order is required use
autoBind(ids:suffix:custom)or bind fields to views manually.Declaration
Swift
public func autoBind(_ suffix: String = "Field", _ custom: ((FxField<E>) -> [FxFieldBindings])? = nil) -> FxForm<E>Parameters
suffixString appended to
field.keyfor automated matching.customOptional function which allows custom bindings and/or controlling which bindings are performed automatically.
Return Value
Self for further customization.
-
Performs semi-auotmatic binding of specified fields and views.
This method finds the matching field for each provided id, then searches the view controller’s IBOutlets for views whose names match
field.key + suffix.If found, the field is automatically bound to that view.
form.autoBind(ids: [.firstname, .lastname])The list order will be the tab order.
Declaration
Swift
public func autoBind(ids: [E], _ suffix: String = "Field", _ custom: ((FxField<E>) -> [FxFieldBindings])? = nil) -> FxForm<E>Parameters
suffixString appended to
field.keyfor automated matching.customOptional function which allows custom bindings and/or controlling which bindings are performed automatically.
Return Value
Self for further customization.
-
Convenience function to automatically change the background color of bound fields if those fields are invalid.
form.autoBind() .autoBindErrorColors()Methods like this one are useful, but exist more to show what can be done with Rx and a list of managed fields and views.
Declaration
Swift
public func autoBindErrorColors(_ errorColor: UIColor = UIColor(red: 1.0, green: 0.9, blue: 0.9, alpha: 1.0)) -> FxForm<E>Parameters
errorColorNew background error colors
Return Value
Self for further customization.
-
Convenience function to automatically hide the superviews of fields that are hidden.
form.autoBind() .autoBindIsHiddenToSuperviews()If, for example, your fields are in views with an accompanying label, doing
field.isHidden = truewould hide the bound view’s parent, hiding both the field and its label.Methods like this one are useful, but exist more to show what can be done with Rx and a list of managed fields and views.
Note: Bind all fields before calling this method.
Declaration
Swift
public func autoBindIsHiddenToSuperviews() -> FxForm<E>Return Value
Self for further customization.
-
Convenience function to automatically bind field titles to specfic labels.
form.autoBind() .autoBindTitles()This method walks through the list of managed fields and searches the view controller’s IBOutlets for labels whose names match
field.key + suffix.‘Methods like this one are useful, but exist more to show what can be done with Rx and a list of managed fields and views.
Note: Bind all fields before calling this method.
Declaration
Swift
public func autoBindTitles(_ suffix: String = "Label") -> FxForm<E>Return Value
Self for further customization.
-
Convenience function to automatically tab to the next field when a field’s max width is reached and the field is valid.
form.autoBind() .autoNext()This is useful for text entry when the field length is fixed, like a credit card expiration date (12/2014).
Note: Bind all fields before calling this method.
Declaration
Swift
public func autoNext() -> FxForm<E>Return Value
Self for further customization.
-
Adds the specfied input accessory view to all bound text fields and text views.
form.autoBind() .addInputAccessoryView()Automatically sets delegate if accessory view conforms to
FxInputAccessoryViewInterface.Note: Bind all fields before calling this method.
Declaration
Swift
public func addInputAccessoryView(_ view: UIView? = nil) -> FxForm<E>Parameters
viewThe input accessory view.
Return Value
Self for further customization.
View on GitHub
FxForm Class Reference