我正在尝试创建一个UITableView,允许用户输入数据,类似于许多UITableViews设置,带有一些文本字段和其他表格视图的标注复选框。对于应用程序中的这种常见功能,这似乎不是很直接。
我无法从自定义UITableViewCell访问indexPath.row。这是我分配自定义UITableViewCell的地方。
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[TextFieldCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
在我的TextField类的@implementation中, - (id)initWithStyle:我正在尝试使用以下命令访问indexPath:
NSIndexPath *indexPath = [(UITableView *)self.superview indexPathForCell:self];
...为了设置textfield的标签,如:
textRow = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 21)];
textRow.tag = [indexPath row];
任何人都可以对我的问题有所了解,或者指出我以编程方式创建基本设置风格的TableViews。
谢谢
答案 0 :(得分:3)
我认为问题可能是在你的单元初始化时它没有被添加到UITableView中 - 因此self.superview返回nil。
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[TextFieldCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
[cell setTag:indexPath.row];
您需要在TextFieldCellClass中添加setTag:方法。我假设代码在cellForIndexPath或其他内部,因此indexPath将传递给该方法。
set tag方法应该如下所示:
-(void)setTag:(int)tag {
textRow.tag = tag;
}