0

我有一个由我的数组内容填充的表格视图_stations

我总共有 50 多个站点(通过 XML 自动获取),每个站点当然都有自己的单元格行,并带有名称标签。我现在遇到的问题是,我手动添加了另一个项目到我的_stations,所以我想从其他项目中脱颖而出,理想情况下我希望它看起来有点不同,也许是半透明的背景为0.5 alpha greenColor,其他一切都相同。

为此,我尝试实现以下代码:

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

    if (_stations.count == 1) {
        // THIS BEING THE SPECIFIC CELL that I have manually added.
        cell.backgroundColor = [UIColor greenColor];
        }

    else {
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.backgroundColor = [UIColor clearColor];
    Station* station = [_stations objectAtIndex:indexPath.row];

    delegate* appDelegate = (delegate*)[UIApplication sharedApplication].delegate;
    if([station.streamURL isEqualToString:[((AVURLAsset*)(appDelegate.mainPlayer.currentItem.asset)).URL absoluteString]])
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }

    cell.titleLabel.text = station.name;
    cell.bitrateLabel.text = [NSString stringWithFormat:@"%@ kbps", station.bitRate];
    }
    return cell;


}

但是当我运行应用程序时,没有任何自定义在特定单元格上......或者任何单元格都没有,但是如果我替换clearColorgreenColorthen 它会将我的所有单元格更改为greenColor(可以理解)......

如何自定义位于阵列中位置 1 的特定单元格?

4

2 回答 2

1

我不认为您使用的 if 条件在您的情况下是正确的。

if (_stations.count == 1) {
    // THIS BEING THE SPECIFIC CELL that I have manually added.
    cell.backgroundColor = [UIColor greenColor];
    }

正如您在问题中提到的那样,_stations.count 将始终为 50 或更多。所以这个条件永远不会满足。

要修改表格的第一个单元格,您需要使用 tableview 的 indexpath。尝试用这个替换你的 if 条件。

if (indexpath.row == 0) {
    // THIS BEING THE SPECIFIC CELL that I have manually added.
    cell.backgroundColor = [UIColor greenColor];
    }

indexpath.row 为您提供该 tableView 中单元格的索引。如果它是第一个单元格,则只需修改它。

于 2013-11-13T08:15:29.963 回答
0

尝试这个 。. .

(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath      
*)indexPath
{
    StationCell* cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

    if(cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
        reuseIdentifier:@"cell";
    }

    if (_stations.count == 1) {
        // THIS BEING THE SPECIFIC CELL that I have manually added.
        cell.backgroundColor = [UIColor greenColor];
     }

    else {
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.backgroundColor = [UIColor clearColor];
        Station* station = [_stations objectAtIndex:indexPath.row];

        delegate* appDelegate = (delegate*)[UIApplication sharedApplication].delegate;
        if([station.streamURL isEqualToString:[((AVURLAsset*)(appDelegate.mainPlayer.currentItem.asset)).URL absoluteString]])
        {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }

        cell.titleLabel.text = station.name;
        cell.bitrateLabel.text = [NSString stringWithFormat:@"%@ kbps", station.bitRate];
}
return cell;
于 2013-11-13T08:30:59.217 回答