【发布时间】:2013-04-09 20:08:01
【问题描述】:
在我的应用程序中,每个单元格内都有一个 UITabeView 和 UITextFields。但是,我在实现上一个/下一个按钮以使上一个/下一个 UITableViewCell 内的文本字段成为第一响应者时遇到了麻烦。
我已经对UITableViewCell 类进行了子类化,让它在按下 prev./next 按钮时调用它的某个方法 delegate 并将单元格本身作为该方法的参数传递(所以我可以得到它的索引路径来计算哪个是单元格的索引路径,其文本字段必须成为第一响应者)
在委托的方法一的实现中:
- 获取按钮被按下的单元格的索引路径
- 在该单元格的索引路径中加或减 1(取决于按下的按钮)
- 使用表格视图上的
-cellForRowAtIndexPath:方法获取必须使其文本字段成为第一响应者的单元格 - 使文本字段成为第一响应者
问题是-cellForRowAtIndexPath: 方法仅在单元格可见时才返回该单元格。因此,当单元格不可见时,它将返回nil,并且上述算法将不起作用,而当单元格在屏幕上时,它将正常工作。
这是我上一篇的代码。按钮,前提是MUInfoMateriaTableViewCell 是我的UITableViewCell 的子类,并且它有一个textField 属性来返回其文本字段:
- (void)prevButtonPressedInCell:(MUInfoMateriaTableViewCell *)cell
{
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
NSIndexPath *previousIndexPath = [NSIndexPath indexPathForRow:indexPath.row-1 inSection:indexPath.section];
MUInfoMateriaTableViewCell *newCell = (MUInfoMateriaTableViewCell *)[self.tableView cellForRowAtIndexPath:previousIndexPath];
[newCell.textField becomeFirstResponder];
}
有什么方法可以“获取”一个不可见的单元格,以便我可以将其文本字段设置为第一响应者?或者你能建议我另一种算法来解决这个问题吗?
【问题讨论】:
标签: iphone ios uitableview first-responder