Sha256: 3d5be2a58e44def915c3f61e2c36d6a66d42a03f96a8f738bbd16308578bd088

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

motion_require 'base'
motion_require 'items_mapper'

module Formotion
  module RowType
    class OptionsRow < Base
      include BW::KVO
      include RowType::ItemsMapper

      def build_cell(cell)
        cell.selectionStyle = UITableViewCellSelectionStyleNone

        segmentedControl = UISegmentedControl.alloc.initWithItems(item_names || [])
        segmentedControl.selectedSegmentIndex = name_index_of_value(row.value) if row.value
        segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar
        segmentedControl.userInteractionEnabled = row.editable?
        cell.accessoryView = cell.editingAccessoryView = segmentedControl

        segmentedControl.when(UIControlEventValueChanged) do
          break_with_semaphore do
            row.value = value_for_name_index(segmentedControl.selectedSegmentIndex)
          end
        end
        observe(self.row, "value") do |old_value, new_value|
          break_with_semaphore do
            if row.value
              segmentedControl.selectedSegmentIndex = name_index_of_value(row.value)
            else
              segmentedControl.selectedSegmentIndex = UISegmentedControlNoSegment
            end
          end
        end

        nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
formotion-1.3.1 lib/formotion/row_type/options_row.rb