【发布时间】:2015-10-14 12:34:09
【问题描述】:
我有一个带有自定义UITableViewCell 的UITableViewController。每个单元格包含一个UITextField。现在我想要的是在按下返回键时将控件从一个文本字段转移到下一个文本字段。
我要做的是这个……
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSIndexPath *currentIndexPath=[self.tableView indexPathForCell:(UITableViewCell*)textField.superview.superview];
if(currentIndexPath.row<_excerciseData.totalBlanks-1){
NSIndexPath nextIndexPath=???
UITextField *nextTextFeild=[(UITableViewCell*)[self.tableView cellForRowAtIndexPath:nextIndexPath] viewWithTag:2];
[nextTextFeild becomeFirstResponder];
}else{
[textField resignFirstResponder];
}
return YES;
}
但我不知道如何找到下一个UITableViewCell 的 indexPath。谁能帮我找到这个?这... :)
【问题讨论】:
-
绝对不要使用
.superview.superview -
@Wain 为什么不用这个...你能解释一下吗?
-
@Wain 是正确的。因为 textField.superview.superview 将无法获取某些 iOS 版本的 tableviewcell。
-
视图层次结构可能会随着操作系统的版本而改变。避免对视图进行类型转换,因为您不确定以后会发生什么。此外,您可能会发现自己处于将字段添加到新子视图的位置,并且需要更改此代码。如果你必须做你所做的至少尝试这样: UITableViewCell *cell = myTextField; while ([cell isKindOfClass:[UITableViewCell class]] == NO) { cell = cell.superview; if(cell == nil) { 休息; } }
标签: ios iphone uitableview uitextfield