2015-03-24 5 views
0

Я создал UIPickerView с проделанной кнопкой на панели инструментов. Я хотел бы сделать следующее:Добавить выделение UIPickerView в TextField только при нажатии кнопки «Готово»

Пользователь выбирает категорию в UIPickerView и затем нажимает кнопку «done». Результат должен состоять в том, что UIPickerView и панель инструментов исчезают, и TextField Category обновляется с выбором пользователя. У меня почти все правильно. PickerView и панель инструментов исчезают, когда нажата кнопка done. Но текстовое поле обновляется еще до того, как я нажму кнопку. Но я хочу, чтобы текстовое поле обновлялось только при нажатии кнопки done.

Может ли кто-нибудь указать мне в правильном направлении, где у меня есть ошибка? Благодаря

, что код, который я использовал:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Do any additional setup after loading the view. 

    //disable saveButton 
    [_saveButton setEnabled:NO]; 

    [self.picker removeFromSuperview]; 
    [self.pickerToolbar removeFromSuperview]; 

    //Initialize Data 
    _pickerData = @[@"Item 1", @"Item 2", @"Item 3", @"Item 4"]; 

    //Connect Data 
    self.picker.dataSource = self; 
    self.picker.delegate = self; 

    _textFieldCategory.inputView = _picker; 
    _textFieldCategory.inputAccessoryView = _pickerToolbar; 

} 

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

// The number of columns of data 
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

// The number of rows of data 
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return _pickerData.count; 
} 

// The data to return for the row and component (column) that's being passed in 
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return _pickerData[row]; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    self.textFieldCategory.text = _pickerData[row]; 
} 

- (IBAction)doneButtonTapped:(id)sender 
{ 
    [self.picker removeFromSuperview]; 
    [self.pickerToolbar removeFromSuperview]; 

ответ

1

Попробуйте создать переменную экземпляра, например

NSInteger selectedRow; 

В методе pickerView:didSelectRow:inComponent:, замените строку вас с

selectedRow = row; 

И в методе doneButtonTapped: добавьте строку

self.textFieldCategory.text = _pickerData[selectedRow]; 
+0

Спасибо Крис. Это сработало как шарм !!! – mjbn

+0

@mjbn Отметьте ответ как правильно, тогда :) – Thomas

+1

Сделано! извините, система сказала мне, что мне нужно подождать 3 минуты, прежде чем я смогу проверить это! – mjbn

Смежные вопросы