我从带有AFNetworking的MySQL数据库中获取数据,数据正在进入,并且正在进行中
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
我有代码来检查当前登录用户是否等于MySQL中的字段'creator',条目显示但我希望隐藏空单元格。
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只显示所选字段的数据,但也显示所有其他空单元格(因为它仍在计算数组)。
答案 0 :(得分:2)
执行此操作的唯一方法是更新数据源阵列,还需要从数据源阵列中删除该对象。如果你想保持这些值,那么你可以再维护一个数组,你可以过滤那个数组来获取所有具有值的对象,并使用谓词来填充带有过滤对象的数据源数组。我希望这会对你有所帮助。
答案 1 :(得分:1)
我建议您在加载anotherArray
之前使用您的条件(masterArray
)从([creator isEqual: userID])
准备tableView
并使用此{{1}加载tableView
}}
答案 2 :(得分: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;
}