私は、このコードのように予め選択された値を持つピッカーのセットを持っています:ユーザーが値を選択しないときにデフォルトのUIPicker値を保存する方法
arrayPickerWeight = [[NSMutableArray alloc] initWithCapacity:100];
for (int i = 80 ; i <= 360 ; i+=10) {
[arrayPickerWeight addObject:[NSString stringWithFormat:@"%i", i]];
}
// Calculate the screen's width.
float screenWidth = [UIScreen mainScreen].bounds.size.width;
float pickerWidth = screenWidth * 3/4;
// Calculate the starting x coordinate.
float xPoint = screenWidth/2 - pickerWidth/2;
pickerView = [[UIPickerView alloc] init];
// Set the delegate and datasource.
[pickerView setDataSource: self];
[pickerView setDelegate: self];
// Set the picker's frame to 50px.
[pickerView setFrame: CGRectMake(xPoint, 50.0f, pickerWidth, 180.0f)];
pickerView.showsSelectionIndicator = YES;
// Set the default value to be displayed
[pickerView selectRow:7 inComponent:0 animated:YES];
[self.view addSubview: pickerView];
[pickerView reloadAllComponents];
ユーザーが値を選択するとすべて正常に動作します。このメソッドは、期待どおり呼び出されます:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
message = [arrayPickerWeight objectAtIndex:row];
}
ただし、ピッカーを移動せずに保存ボタンをクリックすると、メッセージフィールドにnullが表示されます。だから、このコードを手書きでkDefaultPickerWeightに設定しました。これは150ポンドです。
//if picker value is null then populate with default shown
if ([message length] == 0)
{
message = [NSString stringWithFormat:@"%d",kDefaultPickerWeight];
}
しかし、私は欠けている何かまたは私は自動的に私のメッセージの変数に格納された150ポンドを得るために行う必要があるか、私は私が行ったように値をコードに手に持っていないものがありますか?
おかげ
を試みた '場合(メッセージ== NIL){...}'? – pmk
メッセージの長さをチェックすることで効果的だと思います。私は、UIPickerに関連する自然な振る舞いやメソッドに関して、nullであるかどうかを確認することなく、受信変数に格納された事前選択値を取得する方法があるかどうか疑問に思っていました。ありがとう – Jazzmine