FUISegmentedControlFormCell

open class FUISegmentedControlFormCell : FUIInlineValidationDrawingTableViewCell<FUISegmentedControlFormView>

A UITableViewCell subclass, which allows a user to view or select from a list of strings, using a Fiori-styled segmented control.

FUISegmentedControlFormCell

The value property of the cell is equal to the selectedSegmentIndex in the segmented control.

Specifying the height for segments by setting segmentHeight api. By default it is set to nil which means segment will adjust its height to fit content.

Color setting:

Setting text color of buttons in the cell for a state using setButtonAttributes(_:for:) api. Currently disabled, normal and selected are supported.

let attributes = FUISegmentedControlButtonAttributes()
attributes.titleAttributes = ...
attributes.borderColor = ...
cell.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"]]

// Register FUISegmentedControlFormCell in viewDidLoad() method in the controller.
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(FUISegmentedControlFormCell.self, forCellReuseIdentifier: FUISegmentedControlFormCell.reuseIdentifier)
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: FUISegmentedControlFormCell.reuseIdentifier, for: indexPath) as! FUISegmentedControlFormCell

cell.valueOptions = buttonTitles.flatMap { $0.map { $0.value } }
cell.keyName = "Priority"
cell.value = myObject.priority  // String value in the valid options set: ["LO", "MED", "HI"]

// MARK: implement onChangeHandler
cell.onChangeHandler = { newValue in
myObject.priority = buttonTitles[newValue].first!.key  // lookup valid String value, from the buttonTitles array
}

return cell
}

Theming

Supported style classes

fdlFUISegmentedControlFormCell
fdlFUISegmentedControlFormCell_keyLabel
  • Undocumented

    Declaration

    Swift

    public var keyLabel: FUILabel { get }
  • 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 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 if it is allowed to have empty selection.

    Declaration

    Swift

    public var allowsEmptySelection: Bool { get set }
  • The width of segment in the control. Default is 73. Setting this property has no effect if apportionsSegmentWidthsByContent is true.

    Declaration

    Swift

    public var segmentWidth: CGFloat { get set }
  • The height of 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 }
  • Implementation of change handler. Is invoked on changes to the value property.

    Declaration

    Swift

    open var onChangeHandler: ((Int) -> Void)? { 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

    public var valueOptions: [String] { get set }
  • Indicates whether the user can change the selection or not. It is set to true by default.

    Declaration

    Swift

    public var isEditable: Bool { get set }
  • isEnabled and isEditable are in sync.

    Declaration

    Swift

    override 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 }
  • The type of the value.

    Declaration

    Swift

    public typealias ValueType = Int
  • Sets the button attributes for the specified control state.

    This is for customizing the style for 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)