1

我正在使用 AFNetworking 从 MySQL 数据库中获取数据,数据正在输入 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

我有代码来检查当前登录的用户是否等于 MySQL 中的“创建者”字段,条目显示但我希望隐藏空单元格。

if ([creator isEqual: userID]) {

    [cell.contentView addSubview:imageView];

    cell.textLabel.text = [[NSString alloc] initWithFormat:@"       %@",[tempDictionary objectForKey:@"team_name"]];
    cell.detailTextLabel.text = [[NSString alloc] initWithFormat:@"%@        %@ \n%@", [tempDictionary objectForKey:@"date"], [tempDictionary objectForKey:@"time"], [tempDictionary objectForKey:@"location"]];

} else {

    [imageView removeFromSuperview];

    cell.textLabel.text = nil;
    cell.detailTextLabel.text = nil;

}

UITableView 仅显示所选字段的数据,还显示所有其他空单元格(因为它仍在计算数组)。

4

3 回答 3

2

这样做的唯一方法是更新您的数据源数组,您还需要从数据源数组中删除该对象。如果您还想维护这些值,那么您可以再维护一个数组,您可以过滤该数组以获取所有具有值的对象,并使用谓词使用过滤对象填充数据源数组。我希望这能帮到您。

于 2013-06-26T12:00:40.993 回答
1

我建议您在加载和加载使用此之前根据anotherArraymasterArray的情况(即([creator isEqual: userID]))进行准备。tableViewtableViewanotherArray

于 2013-06-26T11:46:09.300 回答
0

可以通过在 中将高度设置为零来隐藏单元格- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

第一个选项是设置一些标志来隐藏空单元格。

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

if ([creator isEqual: userID]) {

    [cell.contentView addSubview:imageView];

    cell.textLabel.text = [[NSString alloc] initWithFormat:@"       %@",[tempDictionary objectForKey:@"team_name"]];
    cell.detailTextLabel.text = [[NSString alloc] initWithFormat:@"%@        %@ \n%@", [tempDictionary objectForKey:@"date"], [tempDictionary objectForKey:@"time"], [tempDictionary objectForKey:@"location"]];

hideCells = NO;

} else {

    [imageView removeFromSuperview];

    cell.textLabel.text = nil;
    cell.detailTextLabel.text = nil;
hideCells = YES;

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
 if(indexPath.row == someCell && hideCells == YES)
return 0;
else
return 44;
}

第二种选择是在数据源字典中添加额外的键值对来跟踪是否需要隐藏单元格。

if ([creator isEqual: userID]) {

    [cell.contentView addSubview:imageView];

    cell.textLabel.text = [[NSString alloc] initWithFormat:@"       %@",[tempDictionary objectForKey:@"team_name"]];
    cell.detailTextLabel.text = [[NSString alloc] initWithFormat:@"%@        %@ \n%@", [tempDictionary objectForKey:@"date"], [tempDictionary objectForKey:@"time"], [tempDictionary objectForKey:@"location"]];

[array replaceObjectAtIndex:indexPath.row withObject:@"YES"];

} else {

    [imageView removeFromSuperview];

    cell.textLabel.text = nil;
    cell.detailTextLabel.text = nil;
[array replaceObjectAtIndex:indexPath.row withObject:@"YES"];

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
 if([[array objectAtIndex:indexPath.row]isEqualToString:@"NO"] )
return 0;
else
return 44;
}
于 2013-06-26T12:08:01.293 回答