2016-08-22 13 views
0

Я пытаюсь обвести голову вокруг UIPickerView и как использовать его для создания таймера. Я обнаружил, что UIDatePicker имеет временный режим, но это компонент, а не класс представления. Но я не уверен, как сделать сложный PickerView вместо некоторых строк. Вот что я до сих пор:Выбор времени с использованием UIPickerView/UIDatePicker

class NewAlarmViewController < UIViewController 
    def viewDidLoad 
    super 

    self.title = "Add Alarm" 
    end 

    def loadView 
    self.view = NewAlarmView.new 

    self.view.showsSelectionIndicator = true 
    self.view.dataSource = self 
    self.view.delegate = self 
    end 

    # Necessary to implement these methods in order to be a datasource 
    # - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 
    def numberOfComponentsInPickerView pickerView 
    2 
    end 

    # - (NSInteger)pickerView:(UIPickerView *)pickerView 
    # numberOfRowsInComponent:(NSInteger)component; 
    def pickerView(pickerView, numberOfRowsInComponent:component) 
    24 
    end 

    def pickerView(pickerView, titleForRow:row, forComponent:component) 
    "#{row}" 
    end 

    private 

    def create_new_alarm(attributes) 
     Alarm.create(attributes) 
     Alarm.save 
    end 
end 

И мой взгляд здесь. У меня DatePicker прокомментировал, поскольку он просто сидит на вершине сборщика, что явно не то, что я хочу. Я не вижу, как использовать DatePicker внутри/вместо pickerView(pickerView, titleForRow:row, forComponent:component)

class NewAlarmView < UIPickerView 
    # attr_accessor :button 

    def init 
    super 

    self.backgroundColor = UIColor.whiteColor 

    # date_picker = UIDatePicker.new 
    # date_picker.frame = [[0, 150], [200, 500]] 
    # date_picker.datePickerMode = UIDatePickerModeTime 
    # addSubview(date_picker) 

    self 
    end 
end 

ответ

0

Я решил подойти к нему по-другому, вместо того, чтобы использовать TableView и с DatePicker в качестве компонента. Существует метод tableHeaderView для UITableView, где я кладу сборщик. Таким образом, мне даже не нужно использовать Autolayout. Надеюсь, что это поможет кому-то в будущем.

Вот сам вид:

class NewAlarmView < UITableView 
    attr_accessor :date_picker 

    def initWithFrame(frame, style:style) 
    super 

    self.backgroundColor = UIColor.whiteColor 
    self.scrollEnabled = false 

    @date_picker    = UIDatePicker.new 
    @date_picker.datePickerMode = UIDatePickerModeTime 
    self.tableHeaderView  = @date_picker 

    self 
    end 
end