2013-05-19 2 views
0

У меня есть UIPickerView, зеленая кнопка для добавления новой записи в UIPickerView. Я могу добавить новую запись, но она не появляется, потому что я не могу изменить количество строк в компоненте.Как добавить строку в UIPickerview

Как добавить запись и строку в UIPickerView?

Спасибо!

Мой UIPickerView:

https://docs.google.com/file/d/0B26lA9znN3CUSTdvX21kUF92MzA/edit?usp=sharing

Редакцией: При нажатии на зеленую кнопку, он отображает UIAlertView TextInput, где я добавить новое значение в моей NSMutableArray, поэтому количество записей изменений. Поэтому, когда ReloadAllComponents он не добавляет лишнюю строку в UIPickerView, потому что я уже установил количество в методе numberOfRowsInComponent.

+0

Пожалуйста, размещайте ваши коды на источнике данных и делегате вашего вида выбора. –

ответ

0

Предположим, что вы управляете NSMutableArray для записей pickerview. В этом случае вы должны управлять 3 метода для того чтобы достигнуть этого:

1. Ваш зеленый кнопка метод обработки

-(IBAction) greenbuttonPressed:(id)sender{ 
    // add new record to your NSMutableArray (mypickerviewrowsarray) 

    [self.myPickerView reloadAllComponents]; 

} 

2. Метод DataSource pickeview, в numberOfRowsInComponent

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return [self.mypickerviewrowsarray count]; 
} 

3. Метод делегата pickerview, titleForRow

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

Чтобы сделать это правильно, убедитесь, что вы установили делегата pickerview, также вы установили, что ваш диспетчер представлений реализует UIPickerViewDelegate и UIPickerViewDataSource.

Надеюсь, вы сможете это использовать!

+0

Когда я нажимаю на зеленую кнопку, отображается UIAlertView TextInput, где я добавляю новое значение в свой NSMutableArray, поэтому число записей изменяется. Поэтому, когда ReloadAllComponents он не добавляет лишнюю строку в UIPickerView, потому что я уже установил количество в методе numberOfRowsInComponent. –

+0

Если я правильно понял, это означает, что перезагрузка должна произойти после закрытия брелока. Таким образом, reloadAllComponents должна быть последней строкой в ​​методе rejectWithClickedButtonIndex, обработчике кнопки AlertView. Вы пробовали это? reloadAllComponents запускает numberOfRowsInComponent, который также должен возвращать увеличенное значение. – nzs

+0

Действительно reloadAllComponents перезагружает все методы UIPickerView, и по этой причине я увидел, что ошибка не в этих методах. Я запрашивал базу данных в методах ViewDidLoad и передавал эти запросы для MSMutableArray. В методе numberOfRowsInComponent я возвращал количество записей. Я решил проблему, выполнив запрос в методе numberOfRowsInComponent, поэтому значение всегда будет обновляться. Короче говоря, я не выполнял запрос еще раз, поэтому число не изменилось. Извините мой плохой английский и спасибо за помощь. –

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