gpt4 book ai didi

objective-c - UITableView 的 indexPathForCell : returns always 0 as indexPath. 行

转载 作者:太空狗 更新时间:2023-10-30 03:44:12 24 4
gpt4 key购买 nike

我有一个带有自定义单元格的 UITableView。此自定义单元格看起来像样式为“Detail Left”的普通单元格。但是我的自定义单元格有一个详细信息标签和一个文本字段,以允许用户编辑文本。我有一个保存按钮,我想在其中保存用户输入的所有数据。我使用本教程制作了自定义单元格:http://agilewarrior.wordpress.com/2012/05/19/how-to-add-a-custom-uitableviewcell-to-a-xib-file-objective-c/#comment-4883

为了获取用户数据,我将文本字段的委托(delegate)设置为 TableView Controller (自身)并实现了 textFieldDidEndEditing: 方法。在此方法中,我请求文本字段的父 View (= 单元格)并请求该单元格的 indexPath。问题是,无论我编辑哪个单元格,indexPath.row 总是得到 0。我做错了什么?

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:[CustomCell reuseIdentifier] forIndexPath:indexPath];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = self.customCell;
self.customCell = nil;
}

cell.label.text = @"Some label text";
cell.editField.delegate = self;
cell.accessoryType = UITableViewCellAccessoryNone;

return cell;
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
CustomCell *cell = (CustomCell *) textField.superview;

NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

NSLog(@"the section is %d and row is %d", indexPath.section, indexPath.row);
...
}

编辑:我刚刚发现,返回的 indexPath 为零。所以如果它是零,我得到标准值 0,没关系。但是现在:为什么我的 indexPath 得到的是 nil?

最佳答案

我自己找到了解决方案。我在stackoverflow中找到了superview的代码,所以我就复制了它。但这是行不通的。你需要像这样做两个 super View :

CustomCell *cell = (CustomCell *) textField.superview.superview;

现在可以正常使用了!

关于objective-c - UITableView 的 indexPathForCell : returns always 0 as indexPath. 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12858762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com