由于您的问题确实提到了 rmq,所以这是一种 rmq 方法:
在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 以了解所选状态。