2013年4月7日日曜日

010-ピッカーの表示(UIPickerView)

ピッカーの使い方に関して。。

iPhone使ってる人はピッカーで何の事かわかるのすかね??

ドラムロールから、任意のステータスを選択するあれです。

では、例文です。

■サンプルソース

h.ファイル


#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource>{
    NSArray*       aItemList;
    UIPickerView*  oPicker;
    UILabel*       oLabel;
}

@end


m.ファイル

#import "ViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [self showPicker];
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)showPicker {
    //ピッカーにアイテムを格納
    aItemList = [[NSMutableArray alloc] initWithObjects:@"リンゴ",@"バナナ",@"マンゴー",@"パパイア", @"ドリアン",nil];
    
    // ピッカーの生成
    oPicker = [[UIPickerView alloc] init];
    //中央に表示
    oPicker.center = self.view.center;
    oPicker.showsSelectionIndicator = YES;
    oPicker.delegate = self;
    oPicker.dataSource = self;
    //画面に追加
    [self.view addSubview:oPicker];
    
    //ラベルの生成
    oLabel = [[UILabel alloc] init];
    oLabel.frame = CGRectMake(0,0,200,50);
    oLabel.text  =@"何が選ばれるのだろう";
    //画面に追加
    [self.view addSubview:oLabel];

}

//区切りの数(コンポーネント)
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}

//コンポーネントの行数を返す
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return [aItemList count];
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    return [aItemList objectAtIndex:row];
}

//選択完了時に呼ばれる
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    //選択行を返す
    NSInteger id = [pickerView selectedRowInComponent:0];
    oLabel.text  = [NSString stringWithFormat:@"%@",aItemList[id]];
}

@end


■実行結果




実行すると、
選択した項目が文字列で出力できていることが確認できると思います。

hファイルでデリゲートの準備をし忘れないように!
@interface ViewController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource>{

mファイルの生成時にデリゲートが呼ばれます。
oPicker.delegate = self;
oPicker.dataSource = self;


//選択完了時に呼ばれる
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
この関数を作成すると、選択している項目を取得できます。


正直UIPickerViewはコードで全部書くのはしんどかったです。
はい。

0 件のコメント:

コメントを投稿