FUISegmentedControlFormView
open class FUISegmentedControlFormView : FUIBaseDrawingView
extension FUISegmentedControlFormView: UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
A base FUISegmentedControlFormView
that allows a user to view or select from a list of strings using a Fiori-styled segmented control.
The value
property of the cell is equal to the selectedSegmentIndex
in the segmented control.
Specify the height for segments by setting the segmentHeight
API. By default it is set to nil, which means the segment will adjust its height to fit the content.
Color setting:
Setting the text color of buttons in the cell for a state using the setButtonAttributes(_:for:)
API. The supported states are: disabled
, normal
, and selected
.
let attributes = FUISegmentedControlButtonAttributes()
attributes.titleAttributes = ...
attributes.borderColor = ...
self.setButtonAttributes(attributes, for: .normal)
Code Usage
// Optionally, create an array of value option to localized string mappings
let buttonTitles: [[String: String]] = [["LO": "Low"], ["MED": "Medium"], ["HI": "High"]]
let view = FUISegmentedControlFormView()
view.valueOptions = buttonTitles.flatMap { $0.map { $0.value } }
view.keyName = "Priority"
view.value = myObject.priority // String value in the valid options set: ["LO", "MED", "HI"]
// MARK: implement `onChangeHandler`.
view.onChangeHandler = { newValue in
myObject.priority = buttonTitles[newValue].first!.key // lookup valid String value, from the buttonTitles array
}
Theming
Supported style classes
fdlFUISegmentedControlFormView
fdlFUISegmentedControlFormView_keyLabel
-
The title of the cell
Declaration
Swift
public var title: String? { get set }
-
The key name of the cell
Declaration
Swift
public var keyName: String? { get set }
-
The type of the value
Declaration
Swift
public typealias ValueType = Int
-
The value of the cell, indicating the index of the selected item.
The default value is
-1
, indicating empty selection.Declaration
Swift
public var value: Int { get set }
-
This property indicates whether an empty selection is allowed.
Declaration
Swift
public var allowsEmptySelection: Bool { get set }
-
The width of the segment in the control. The default is 73. Setting this property has no effect if
apportionsSegmentWidthsByContent
istrue
.Declaration
Swift
public var segmentWidth: CGFloat { get set }
-
The height of the segment in the control. If
segmentHeight
is nil, use the AutoLayout system height of the first segment as the unique height for all segments.Declaration
Swift
public var segmentHeight: CGFloat? { get set }
-
The array of the valid options. The maximum number of items in the array is limited to 5. If there are more than 5 items, only the first 5 items will be used.
Declaration
Swift
@objc public var valueOptions: [String] { get set }
-
Indicates whether the user can change the selection or not. This is set to
true
by default.Declaration
Swift
public var isEditable: Bool { get set }
-
isEnabled
andisEditable
are in sync.Declaration
Swift
public var isEnabled: Bool { get set }
-
Indicates whether the control attempts to adjust segment widths based on their content widths. The default is
false
.Declaration
Swift
public var apportionsSegmentWidthsByContent: Bool { get set }
-
Implementation of change handler. This is invoked on changes to the
value
property.Declaration
Swift
open var onChangeHandler: ((Int) -> Void)?
-
The key name label in the cell
Declaration
Swift
public lazy var keyLabel: FUILabel { get set }
-
Sets the button attributes for the specified control state.
This is used to customize the style of the buttons. If this is not set, the default Fiori style attributes will be used.
Declaration
Swift
public func setButtonAttributes(_ buttonAttributes: FUISegmentedControlButtonAttributes, for state: FUIControlState)