У меня есть набор сборщиков, каждый из которых имеет предварительно выбранное значение, например, этот код показывает, где 150 фунтов - это предварительно выбранное значение:
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];
}
Однако, если они просто нажимают кнопку сохранения, не перемещая средство выбора, я получаю нулевое значение в поле своего сообщения. Поэтому я вручную написал этот код, чтобы установить для него значение kDefaultPickerWeight, которое составляет 150 фунтов.
//if picker value is null then populate with default shown
if ([message length] == 0)
{
message = [NSString stringWithFormat:@"%d",kDefaultPickerWeight];
}
Однако есть ли что-то, чего мне не хватает, или что-то, что мне нужно сделать, чтобы автоматически сохранить 150 фунтов в моей переменной сообщения, или мне нужно вручную кодировать значение, как я?
Спасибо