gpt4 book ai didi

ios - 行删除后,UITableviewcell中的UITextfield返回的标签错误

转载 作者:行者123 更新时间:2023-12-01 16:51:16 25 4
gpt4 key购买 nike

我在每个单元格中都有一个UITextfield,我正在为其分配与当前行号相等的标记。
cell.textfield.tag = indexPath.row;
当用户结束编辑文本字段时,我需要 indexpath.row

-(void) textFieldDidEndEditing:(UITextField *)textField{

CustomCell *cell = (CustomCell *) [[textField superview]superview];

if([cell isKindOfClass:[UITableViewCell class]]){

//NSIndexPath *indexPath = [Table indexPathForCell:cell];

int row = textField.tag;
NSLog(@"indexpath: %d",row);

NSString *str = [datasource objectAtIndex:row]; //get exception here
.............. }

我在这里面临的问题是,当我使用 deleteRowsAtIndexPaths删除一行,然后结束编辑最后一个单元格时,我得到了错误的标记号,因为数据源在该索引处不包含元素。此外,我不能使用 indexPathForCell:,因为如果我正在编辑其文本字段的单元格超出屏幕,它将返回null。

如何获得正确的标签号?我不想重新加载表格,因为它没有任何动画。有什么可以替代的?任何建议都欢迎。谢谢。

最佳答案

不要使用indexPath.row来定义您的值,如下所示

我是根据假设编写的以下代码,我不知道您的数据源可能有所不同。

for(int i=0;i<10;i++){
Data *obj=[[Data alloc] init];
obj.tag=i;//
obj.value=@"your value";

[dataSource addObject:obj];
}

Data *obj=[dataSource objectAtIndex:indexPath.row];
cell.textfield.tag = obj.tag;

而您将获取标签
-(void) textFieldDidEndEditing:(UITextField *)textField{

CustomCell *cell = (CustomCell *) [[textField superview]superview];

if([cell isKindOfClass:[UITableViewCell class]]){

//NSIndexPath *indexPath = [Table indexPathForCell:cell];

int row = textField.tag;
NSLog(@"indexpath: %d",row);

Data *obj;
for(Data *data in dataSource){
if(data.tag == row){
obj=data;break;
}

}

NSString *str = obj.value;
}

关于ios - 行删除后,UITableviewcell中的UITextfield返回的标签错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15564604/

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