Поскольку в вашем вопросе упоминается rmq, вот способ rmq:
In viewDidLoad
:
@hello_world_label = rmq.append(UILabel, :hello_world).get
@button = rmq.append(UIButton, :toggleable_button)
@button.on(:touch) do |sender|
sender.selected = !sender.selected?
end
Обратите внимание, что переключение достигается путем запроса фактического состояния кнопки. Если вам нужно запомнить это для последующего использования, вы можете сохранить это в переменной экземпляра.
В вашей таблице стилей:
def toggleable_button(st)
st.frame = {t: 200, w: 100, h: 24}
st.image_normal = image.resource('toggle_me')
st.image_selected = image.resource('toggled')
end
Обратите внимание на использование image_selected
. Ну, этого нет в rmq, но вы можете сделать это довольно легко. Если это проект rmq, у вас будет каталог stylers/. Там вы должны увидеть ui_button_styler.rb. Вот код, чтобы сделать выделенное государство гражданином первого класса:
module RubyMotionQuery
module Stylers
class UIButtonStyler < UIControlStyler
def image_selected=(value)
@view.setImage(value, forState:UIControlStateSelected)
end
def image_selected
@view.imageForState UIControlStateSelected
end
end
end
end
Как видите, код вашего контроллера остается чистым, начальные настройки кнопки перенесены в таблицу стилей, и вы аккуратно расширили rmq для понимания выбранного состояния.
person
Steve Ross
schedule
11.05.2014