忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/24 10:09 |
iPhoneOS4.1 チェックボックスを作りたい
<input type="checkbox">っぽいものを作ってみる。

入力に関わるクラスは基本的にUIControlを継承しているようです。
中でも特にスイッチっぽいのを探してみます。

UISwitch
  UISwitch *hoge=[[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
  20110103_ss_UISwitch.png

UISegmentedControl
  NSArray *arr = [NSArray arrayWithObjects:@"オン", @"オフ", nil];
  UISegmentedControl *hoge = [[UISegmentedControl alloc] initWithItems:arr];
  hoge.frame = CGRectMake(0, 0, 100, 50);
  20110103_ss_UISegmentedControl.png

UIButton
  UIButton *hoge = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  hoge.frame = CGRectMake(0, 0, 100, 50);
  [hoge setTitle:@"オフ" forState:UIControlStateNormal];
  [hoge setTitle:@"オン" forState:UIControlStateSelected];
  [hoge addTarget:self action:@selector(hogehoge:) forControlEvents:UIControlEventTouchDown];

-(void)hogehoge:(UIButton*)button{
  if (button.selected == YES) {
    button.selected = NO;
  }else {
    button.selected = YES;
  }
}
  20110103_ss_UIButton.png


UISwitchが一番楽ですが、まともな方法ではテキストを変えられないという致命的欠陥があるので本当にオンオフを行いたい場合以外は使えません。


UISegmentedControlはそのまま簡単に3つ以上の選択肢にも拡張できるという点が便利です。
配列を増やすだけでcheckboxだけではなくradioにも対応可能です。
で、そのnilって何よ。

UIButtonはもっとも<input type="checkbox">に近いものを作成できますが、何故か自分でメソッドを実装しないと動きません。
あと背景色が変えられないので、背景色を付けるためには画像を用意してsetBackgroundImageしないといけません。
setBackgroundColorすると何故かボタンの周りの色が変わってしまいます。
  20110103_ss_UIButtonBackground.png

なんでこんなに面倒なのでしょうか。


結論としては、必要に応じて使い分けるということでよいでしょう。
結論かそれ?


さて個人的に、initWithFrameでインスタンスを作れたり作れなかったりするのが非常に気持ち悪い。
上記クラスは何れもUIControlを継承しており、UIControlUIViewを継承しており、initWithFrameUIViewで実装されているのでUISegmentedControlにもUIButtonにも存在します。
実際に
  UIButton *hoge=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
とインスタンスの作成を行うことはできます。

ところが、アイテムを突っ込むことができないのでせっかくインスタンスを作成しても全くの無駄になります。
なんでこんな美しくない設計なの?
[UISegmentedControl setItems:arr]くらいできてもいいだろ。
PR


2011/01/03 20:28 | Comments(0) | TrackBack() | その他

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<Symfony1.4 11日目その3 | HOME | 買ったものリスト 2011/01/02>>
忍者ブログ[PR]