Я делаю приложение coredata, в котором мне было поручено сделать табличное представление (заполнение формы) текстовым полем в каждой строке, которую я успешно выполнил. Затем я создал панель инструментов с предыдущей и следующей кнопками и добавила в inputAccsoryView textField для навигации между текстовыми полями каждой ячейки. Одно текстовое поле в строке. Я также могу сделать магию с помощью предыдущих и следующих кнопок. Теперь проблема:Навигация по текстовым полям uitableview
Предположим, у меня есть 3 раздела. В первом разделе 4 строки. Во втором разделе 6 строк и в последней секции 1 строки. Теперь, когда я начинаю с 1-й строки и нажимает дальше до 11-й строки, она работает правильно, но затем я нажимаю далее, ничего не происходит, поскольку первая строка выгружена. Я получаю «нуль» для нее. Код, я использую:
настройки ячейки
if (cell == nil) {
NSLog(@"tag inside:%i",tag);
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:identifier] autorelease];
UITextField *theTextField = [[UITextField alloc] initWithFrame:CGRectMake(120, 10, 170, 25)];
theTextField.textAlignment = UITextAlignmentRight;
theTextField.delegate = self;
theTextField.tag = tag;
theTextField.inputAccessoryView = [self configureTheToolBar];
[theTextField setKeyboardAppearance:UIKeyboardAppearanceAlert];
[cell.contentView addSubview:theTextField];
[theTextField release];
}
cell.textLabel.text = rowLabel;
UITextField *textField = (UITextField *)[cell.contentView viewWithTag:tag];
textField.text = rowValue
я обеспечиваю теги для текстового поля, как 601, 602 и т.д..
Затем получая currentTextField тег
- (void)textFieldDidBeginEditing:(UITextField *)textField{
currentTextField = textField.tag;
}
затем следующий метод
if(currentTextField == 611){
currentTextField = 601;
} else{
currentTextField = currentTextField + 1;
}
NSLog(@"current text fiedld = %i",currentTextField);
NSLog(@"text ; %@",[self cellForTag:currentTextField].textLabel.text);
UITextField *firstResponderField = (UITextField *) [[self cellForTag:currentTextField].contentView viewWithTag:currentTextField];
[firstResponderField becomeFirstResponder];
и метод cellForTag:
-(UITableViewCell *)cellForTag:(NSInteger)tag{
UITableViewCell *cell;
switch (tag) {
case 601:{
NSUInteger onlyRow[] = {0, 0};
NSIndexPath *onlyRowPath = [NSIndexPath indexPathWithIndexes:onlyRow length:2];
//[self.tableView scrollToRowAtIndexPath:onlyRowPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
cell = [self.tableView cellForRowAtIndexPath:onlyRowPath];
break;
}
return cell
этот код работает частично, как раз от экрана клетки получают из памяти я не могу добраться до текстового поля в этой ячейке, а следующая кнопка перестает работать до значение currentTextfield достигает любого visiblerow. Каким может быть решение. мой стек переполнен. :)
Ok this нить делает трюк, но я не знаю, как. может ли кто-нибудь объяснить мне, как?