如何跳过UITableViewCells中的空标签

时间:2014-03-19 04:42:20

标签: ios iphone uitableview

我的cell.textLabel.text有时会返回一个空字符串。有没有办法可以跳过这个单元格并在我的最后一个非空cell.textLabel.text之后放下我的下一个文本标签?所以不应该有空标签。

- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                  reuseIdentifier:MyIdentifier];
    }
    ResultModel *resultModel = [self.array objectAtIndex:indexPath.row];
    cell.textLabel.text = resultModel.resultString;

    return cell;
}

6 个答案:

答案 0 :(得分:0)

cell.textLabel 获取整个内容视图的 size.width ,以便您计算字符串的长度并相应地操作下一个标签

答案 1 :(得分:0)

试试这段代码。

if([resultModel.resultString isEqualToString:@""])
{
    // Display the label
cell.textLabel.text = resultModel.resultString;
}
else
{
    //result  string is Null do nothing here.
}

答案 2 :(得分:0)

为什么不直接获得有价值的实例" resultString"属性?

NSArray *dataWithResultString = [call the custom method to get instances with no empty value];
ResultModel *resultModel = [dataWithResultString objectAtIndex:indexPath.row];

答案 3 :(得分:0)

这应该在数据源数组本身处理......

使用具有resultModel.resultString的值填充新数组,并将此数组用作表的数据源

答案 4 :(得分:0)

如果我理解正确你只想在resultModel.resultString中有一些非空字符串时显示单元格,对吗?

为此,您最好处理数据源数组本身。如果这很难,你可以这样做。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
ResultModel *resultModel = [self.array objectAtIndex:indexPath.row];
if([resultModel.resultString isEqualToString:@""])
 return 0.0;
else
 return 50;//or whatever
}

但它更好地处理数据源本身。

答案 5 :(得分:0)

如果我正确地读你,结果数组可能会返回一个空字符串,如果是这样,你不想显示那些行吗?

理想情况下,您应该在查询中添加另一个参数,以排除resultString。但是,如果您想要 hacky 方式,请声明(int)padRows并在viewDidLoad中将其设置为0;

- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
static NSString *MyIdentifier = @"MyIdentifier";

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:MyIdentifier];

if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                  reuseIdentifier:MyIdentifier];
}
ResultModel *resultModel = [self.array objectAtIndex:indexPath.row];

while([resultModel.resultString isEqualToString:@""]) {
  _padRows += 1;
  resultModel = [self.array objectAtIndex:(indexPath.row+_padRows)];
}

cell.textLabel.text = resultModel.resultString;

return cell;
}

代码未经过测试。