25

テーブルの各セルにトグル ボタンを作成しようとしています。押すと画像が変わり、もう一度押すと画​​像が変わります -- トグル。

クラスではUIButton、状態が表示されませんselected

クリックごとに状態を変更できるように、UIButton を使用してトグル ボタンを作成する方法を探しています。

これが私がrubymotion今使っている方法ですrmq

@fav_button.on(:touch) do |sender|
  puts "pressed fav button for id: " + data[:id] + " and name: " + data[:name]
  #how do I change the state here?
end
4

5 に答える 5

44

トグル ボタンを簡単に作成できます。それぞれの状態にそれぞれの画像を設定するだけで済みます。その後、selectedプロパティを使用してこれらの画像を切り替えることができます。

どのようにそれを行うことができるかを示すために、純粋なobjective-cコードを作成しましたが、ストーリーボードまたはXibsでも画像を設定できます。チェックアウトしてください:

// First, set the images for normal state and selected state
[button setImage:normalImage forState:UIControlStateNormal];
[button setImage:selectedImage forState:UIControlStateSelected];


// Don't forget to add an action handler to toggle the selected property
[button addTarget:self action:@selector(buttonTouch:withEvent:) forControlEvents:UIControlEventTouchUpInside];


// Now, in your button action handler, you can do something like this:
- (void)buttonTouch:(UIButton *)aButton withEvent:(UIEvent *)event
{
  aButton.selected = !aButton.selected;
}

これがお役に立てば幸いです。

于 2014-04-05T16:35:01.483 に答える
1

あなたの質問は 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 が適切に拡張されています。

于 2014-05-11T21:37:00.290 に答える
0

ボタンの画像を切り替える最も簡単なロジック。:)

(IBAction)toggleButton:(id)sender {
       if (self.toggleButton.selected==YES) {
           [self.toggleButton setSelected:NO];
        }else{
       [self.toggleButton setSelected:YES];
       [self.toggleButton setImage:[UIImage imageNamed:@"favStar.png"]    forState:UIControlStateSelected];
       }
于 2015-06-26T10:25:12.717 に答える