1

此代码应在单元格上画一条线:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (nil==cell){
        cell = [[UITableViewCell alloc]
                                 initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }

    NSString *currentCourseName=[courseKeys objectAtIndex:[indexPath row]];
    [[cell textLabel] setText:currentCourseName];
    NSLog(currentCourseName);
    CGSize size = [cell.textLabel.text sizeWithFont:cell.textLabel.font];
    CGFloat y = cell.contentView.frame.size.height / 2;

    UIView *line = [[UIView alloc] initWithFrame:CGRectMake(5,y,size.width, 3)];
    line.backgroundColor = [UIColor redColor];
    [cell.textLabel addSubview:line];

    return cell;

}

但似乎我必须滚动几次才能看到红线。 在此处输入图像描述

4

3 回答 3

2

我在您的代码中看到两个问题。

第一的

CGFloat y = cell.contentView.frame.size.height / 2;

创建单元格frame的时候是什么?contentView如果要将子视图添加到标签,请使用标签的高度。

CGSize size = [cell.textLabel.text sizeWithFont:cell.textLabel.font];
UIView *line = [[UIView alloc] initWithFrame:CGRectMake(5, cell.textLabel.bounds.size.height / 2.0f - 1.5f, size.width, 3)];
line.autoresizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin);

第二

[cell.textLabel addSubview:line];

如果一个单元格被重复使用,那么当已经有一行时,您正在向单元格添加行。首先检查textLabel子视图计数。

if (cell.textLabel.subviews.count == 0) {
    [cell.textLabel addSubview:line];
}
于 2013-03-25T12:38:40.637 回答
1

我认为您正在添加的视图,而不是在您的方法中添加该视图,请(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath尝试使用自定义单元格概念。这解决了我的这个问题UITableView

以编程方式创建自定义表格视图单元格

iPad 编程中的自定义表格视图单元格

于 2013-03-25T12:47:13.140 回答
0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (nil==cell){
        cell = [[UITableViewCell alloc]
                                 initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];

     NSString *currentCourseName=[courseKeys objectAtIndex:[indexPath row]];
    [[cell textLabel] setText:currentCourseName];
    NSLog(currentCourseName);
    CGSize size = [cell.textLabel.text sizeWithFont:cell.textLabel.font];
    CGFloat y = cell.contentView.frame.size.height / 2;

    UIView *line = [[UIView alloc] initWithFrame:CGRectMake(5,y,size.width, 3)];
    line.backgroundColor = [UIColor redColor];
    [cell.contentView addSubview:line];

    }



    return cell;

}
于 2013-03-25T12:29:24.373 回答