0

私のアプリでは、ボタンが押されたときに、ボタンを使用して起動UIActionSheetUIPickerViewUIToolBarいます。次のコードを使用すると、完全に機能します。ピッカー値を取得し、その値を呼び出されたボタンに設定しようとしていますが、正確な解決策が見つかりませんでした。

- (IBAction)showPicker:(id)sender {

 actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
                                                         delegate:self
                                                cancelButtonTitle:nil
                                           destructiveButtonTitle:nil
                                                otherButtonTitles:nil];//as we want to display a subview we won't be using the default buttons but rather we're need to create a toolbar to display the buttons on 

[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

CGRect pickerFrame = CGRectMake(0, 40, 0, 0);

pickerView = [[UIPickerView     alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.dataSource = self;
pickerView.delegate = self;

[actionSheet addSubview:pickerView];
//[pickerView release];     

pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
pickerToolbar.barStyle = UIBarStyleBlackOpaque;
[pickerToolbar sizeToFit];

NSMutableArray *barItems = [[NSMutableArray alloc] init];   

UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];  
[barItems addObject:flexSpace];  

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)];  
[barItems addObject:doneBtn];  

UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonPressed:)];  
[barItems addObject:cancelBtn];  


[pickerToolbar setItems:barItems animated:YES];  

[actionSheet addSubview:pickerToolbar];  

[actionSheet addSubview:pickerView];  

[actionSheet showInView:self.view];  

[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];         

}

ツールバーの[完了]ボタンを押すと、このメソッドが呼び出されます

-(void)doneButtonPressed:(id)sender{  
//Do something here here with the value selected using [pickerView date] to get that value   
[actionSheet dismissWithClickedButtonIndex:1 animated:YES];   
[pickerView release];
[pickerToolbar release];
[actionSheet release];     
}  

これが私の質問です

アクションシートからピッカー値を取得する方法は?

その値をボタンに設定するにはどうすればよいですか?

助けてくれてありがとう

4

2 に答える 2

1

.hまたは.mに1つのivarを作成し、をivarに割り当てる[pickerView date]だけで、ActionSheetから値を取得できます。

ハッピーコーディング:)

編集

メソッドに-(void)doneButtonPressed:(id)senderこのコード行を入れるだけです

selected = [pickerView date];

そして、以下のように.hで宣言されselectedNSDateタイプivarです

@property (strong, nonatomic) NSDate *selected;

また、datePickerに対して1つのプロパティを宣言する必要があります

@property (strong, nonatomic) UIDatePicker *pickerView;

そして.mでそれを以下のように合成します

@synthesize pickerView;
@synthesize selected;

ハッピーコーディング:)

編集1

カスタムpickerViewの場合

(pickerViewのすべてのデリゲートとデータソースが定義および宣言されていると想定しています)

カスタムピッカーから選択した値を取得するには、以下のコードを使用する必要があります

NSInteger row = [singlePicker selectedRowInComponent:0];
NSString *selected = [pickerData objectAtIndex:row]; 

singlePicker= pickerViewでありpickerDataNSArraypickerViewのデータソースとして使用されます

これがあなたの問題を解決するのに役立つかもしれません。

ハッピーコーディング:)

于 2012-08-01T10:57:51.590 に答える
1

pickerViewデータソースにコンポーネントが1つしかない場合、次を使用して選択した行を取得できます。

NSInteger row = [pickerView selectedRowInComponent:0];
于 2012-08-01T11:59:03.213 に答える