分别评估 UITableView 的每一行 iPhone

发布于 2024-12-13 08:45:20 字数 1153 浏览 1 评论 0原文

我想显示一张图片,如果每一行都以某个字符开头,比如“&”在下面的例子中。下面的代码似乎仅在第一行不以“&”开头时才有效。如果第一行有“&”所有行都会有图片。怎么了?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
                                       reuseIdentifier:CellIdentifier] autorelease];
    }
    if ([[[array objectAtIndex:(indexPath.row)] substringToIndex:1] isEqualToString:@"&"])
        {
            cell.textLabel.text = [array objectAtIndex:(indexPath.row)];
            cell.detailTextLabel.text = [array objectAtIndex:(indexPath.row)+1];
            cell.imageView.image = [UIImage imageNamed:@"picture.png"];
            return cell;
        }
        else
        {
            cell.textLabel.text = [array objectAtIndex:(indexPath.row)];
            cell.detailTextLabel.text = [array objectAtIndex:(indexPath.row)+1];
            return cell;
        }
    }

I want to show a picture if each row starts with a certain character, let's say "&" in the below example. The code below seems to only work if the first row doesn't start with '&'. If the first row has '&' all of the rows will have the picture. What's wrong?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
                                       reuseIdentifier:CellIdentifier] autorelease];
    }
    if ([[[array objectAtIndex:(indexPath.row)] substringToIndex:1] isEqualToString:@"&"])
        {
            cell.textLabel.text = [array objectAtIndex:(indexPath.row)];
            cell.detailTextLabel.text = [array objectAtIndex:(indexPath.row)+1];
            cell.imageView.image = [UIImage imageNamed:@"picture.png"];
            return cell;
        }
        else
        {
            cell.textLabel.text = [array objectAtIndex:(indexPath.row)];
            cell.detailTextLabel.text = [array objectAtIndex:(indexPath.row)+1];
            return cell;
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晰传感 2024-12-20 08:45:20

由于第一个单元格稍后可能会被重用,因此您必须在每次调用cellForRowAtIndexPath时“重置”其状态。尝试在 else 块中的 cell.detailTextLabel.text 之后添加 cell.imageView.image = nil

Since the first cell may be reused later on, you have to "reset" its state on every call of cellForRowAtIndexPath. Try adding cell.imageView.image = nil after cell.detailTextLabel.text in the else block.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文