Iphone 在uitableview的文本字段之间导航
我正在制作一个coredata应用程序,在该应用程序中,我被指示制作一个tableview填充表单,在每一行中使用textfield,我成功地做到了这一点。然后,我制作了一个带有“上一个”和“下一个”按钮的工具栏,并将其添加到textField的InputAsoryView中,以便在每个单元格的textfields之间导航。每行一个文本字段。我也能用“上一步”和“下一步”按钮的方法来实现这个神奇的效果。现在的问题是: 假设我有3个部分。在第一节中有4行。第二节中有6行,最后一节中有1行。现在,当我从第1行开始,按下next直到第11行,它工作正常,但是当我按下next时,什么也没有发生,因为第一行被排了队,我得到了零。我正在使用的代码: 配置单元Iphone 在uitableview的文本字段之间导航,iphone,uitableview,navigation,uitextfield,Iphone,Uitableview,Navigation,Uitextfield,我正在制作一个coredata应用程序,在该应用程序中,我被指示制作一个tableview填充表单,在每一行中使用textfield,我成功地做到了这一点。然后,我制作了一个带有“上一个”和“下一个”按钮的工具栏,并将其添加到textField的InputAsoryView中,以便在每个单元格的textfields之间导航。每行一个文本字段。我也能用“上一步”和“下一步”按钮的方法来实现这个神奇的效果。现在的问题是: 假设我有3个部分。在第一节中有4行。第二节中有6行,最后一节中有1行。现在,当
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
此代码部分工作,因为一旦屏幕外的单元格超出内存,我无法访问该单元格中的textfield,并且“下一步”按钮停止工作,直到currentTextfield值到达任何可见行。解决办法是什么。我的堆栈溢出了
好的,线程完成了这个技巧,但我不知道怎么做。有人能告诉我怎么做吗?一旦一个单元格离开屏幕,它将无法访问。因此,您可能希望在用户通过连接UIControlEventEditingDidEnd事件完成编辑后立即获取文本字段的值:
[myTextField
addTarget:self
action:@selector(myTextChanged:)
forControlEvents:UIControlEventEditingDidEnd];
在myTextChanged函数中,您可以将这些值存储起来,如果您想根据标记对它们进行键控,可以将它们存储在字典中