我的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;
}
答案 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;
}
代码未经过测试。