gpt4 book ai didi

ios - indexPath.row 在静态或滚动时更新不正确

转载 作者:行者123 更新时间:2023-11-29 01:19:30 25 4
gpt4 key购买 nike

我创建了一个表格,该表格可以正常滚动。当我单击一行并想要使用 indexPath.row 检索行号时,问题就开始了。

我浏览了该网站上可以找到的所有帖子以寻求解决方案,但不幸的是,之前提供的任何内容都无法帮助解决我的情况。

我的 cellForRowAtIndexPath 将行值存储在“selectedRow”中。在 didSelectRowAtIndexPath 中,我使用 NSLog 显示该值,下面是发生的情况。

当我运行应用程序时,前两行显示在屏幕上。如果我在执行其他操作之前按任意一行,则两行都会返回 1。

如果我向下滚动以显示第三行和第四行,则两行都会返回 3。

因此它显示屏幕上最后显示的那一行的值作为两者的值。

如果我随后向上滚动列表,按 rows 将返回 0。

我读到的所有内容都指向导致问题的 cellForRowAtIndexPath 中的某些内容,但我不知道它是什么。我在这里阅读了多篇文章,并尝试在代码的不同部分阅读 indexPath.row 。

感谢您提供的任何帮助。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
selectedRow = indexPath.row;

PosterURLstartpath = [NSString stringWithFormat:@"%s%@","https://image.tmdb.org/t/p/w185",[[creditList objectAtIndex:indexPath.row] aPosterpath]];
[cell.imageView sd_setImageWithURL : [NSURL URLWithString:PosterURLstartpath] placeholderImage: [UIImage imageNamed:@"placeholder1.png"]];

cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont systemFontOfSize:14.0];
cell.textLabel.text = [[creditList objectAtIndex:indexPath.row] aTitle];
cell.textLabel.text = [NSString stringWithFormat:@"%@%@",cell.textLabel.text,@"\n"];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSString *StringReleaseYear = [[[creditList objectAtIndex:indexPath.row] aReleaseYear] substringToIndex: 4];

if (![StringReleaseYear isEqualToString:@"0000"]) {
cell.textLabel.text = [NSString stringWithFormat:@"%@%@",cell.textLabel.text,StringReleaseYear];
cell.textLabel.text = [NSString stringWithFormat:@"%@%@",cell.textLabel.text,@"\n"];
}

if ([[[creditList objectAtIndex:indexPath.row] aType] isEqual: @"tv"]) {
cell.textLabel.text = [NSString stringWithFormat:@"%@%@",cell.textLabel.text,@"(TV series)"];
cell.textLabel.text = [NSString stringWithFormat:@"%@%@",cell.textLabel.text,@"\n"];
}
cell.textLabel.text = [NSString stringWithFormat:@"%@%@",cell.textLabel.text,[[creditList objectAtIndex:indexPath.row] aCharacter]];
cell.textLabel.text = [NSString stringWithFormat:@"%@%@",cell.textLabel.text,@"\n"];
cell.imageView.userInteractionEnabled = YES;
return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"didSelectRowAtIndexPath Row %ld",(long)selectedRow);
}

最佳答案

selectedRow 值按预期打印。因为您在每次调用单元格填充方法时都会增加 selectedRow 的值。如果你想知道哪个 tableviewcell 被按下,你应该使用 tableView:didSelectRowAtIndexPath:indexPath value

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"didSelectRowAtIndexPath Row %ld",(long)indexPath.row);
}

上面的代码应该为您打印真实的行号。

关于ios - indexPath.row 在静态或滚动时更新不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775569/

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