隐藏单个UITableViewCell分隔符

时间:2015-03-03 01:27:26

标签: ios objective-c iphone uitableview

我试图隐藏UITableView中两个单元格下面的灰线(分隔符),但是我遇到了麻烦。

我有一个Grouped UITableView,这是我的cellForRowAtIndexPath方法

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

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];


    if (indexPath.section == 0)
    {
        if (indexPath.row == 0) {
            // Date
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            }
            cell.textLabel.text = @"Date:";
            cell.detailTextLabel.text = currentDateString;
        } else if (indexPath.row == 1) {
// UIPicker
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
            }
            cell.clipsToBounds = YES;
            [cell.contentView addSubview:datePickerForCell];
        } 
    } else if (indexPath.section == 1) {
        if (indexPath.row == 0) {
// Order No.
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            }
            cell.textLabel.text = @"Order No:";
            cell.detailTextLabel.text = @"001-01989";
        }  else if (indexPath.row == 2) {
// Location
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            }
            cell.textLabel.text = @"Completed:";

            CGFloat optionalRightMargin = 10.0;
            CGFloat optionalBottomMargin = 10.0;

            completedByTextField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, cell.contentView.frame.size.width - 110 - optionalRightMargin, cell.contentView.frame.size.height - 10 - optionalBottomMargin)];
            self.completedByTextField.delegate = self;
            completedByTextField.textColor = [UIColor grayColor];
            completedByTextField.tag = 2;
            completedByTextField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
            completedByTextField.textAlignment = NSTextAlignmentRight;
            completedByTextField.placeholder = @"Name";
            completedByTextField.text = completedByString;

            [cell.contentView addSubview:completedByTextField];
        } else if (indexPath.row == 3) {
// Hours Worked
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            }
            cell.textLabel.text = @"Hours Worked:";
            cell.detailTextLabel.text = @"4 hrs 26 min";
        }
    } else if (indexPath.section == 2) {
        if (indexPath.row == 0) {
// Description
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            }
            cell.textLabel.text = @"Description:";
        } else if (indexPath.row == 1) {
// Description Textfield
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            }
            [cell.contentView addSubview:descriptionTextView];
        }
    } else if (indexPath.section == 3) {
        if (indexPath.row == 0) {
// Materials
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            }
            cell.textLabel.text = @"Materials:";
        }
    }

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }

    return cell;
}

我想隐藏

下的分隔符

//说明Textfield Cell

//材料Textfield Cell(这还没有编写,它只是我想说清楚我会想要做两个单元格而不仅仅是一个,因为它可能会影响你的答案我猜...)

我已经阅读过有关使用tableview.separatorcolor的内容,但这会更改TableView中每个单元格分隔符颜色的颜色。

4 个答案:

答案 0 :(得分:1)

据我所知,不可能只为某些细胞隐藏细胞分离器。它适用于完整的表格视图。

但是,您可以通过在要隐藏分隔符的那些单元格上添加透明或白色图像视图来实现此目的。保持图像视图大小略大于行高。可能应该有所帮助。

否则通常不可能只隐藏某些单元格的单元格分隔符。如果在特定分隔符中进行任何更改,它将反映在所有表格视图单元格分隔符中。

答案 1 :(得分:0)

您可以通过设置tableview偏移来隐藏线条。

cell.separatorInset = UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);

答案 2 :(得分:0)

您无法触发分隔符隐藏/取消隐藏UITableView的特定单元格。而是完全禁用单元格分隔符,并为您需要的单元格添加自定义分隔符。将以下代码添加到需要显示分隔符的单元格中:

UIView* separatorView = [[UIView alloc] initWithFrame:CGRectMake(0, cell.contentView.frame.size.height-1, cell.contentView.frame.size.width, 1)];
separatorView.backgroundColor = [UIColor lightGrayColor]; // set custom color here
[cell.contentView addSubview:separatorView];

答案 3 :(得分:0)

您可以在cellForRowAtIndexPath方法中使用这行代码 -

tableView.separatorStyle=UITableViewCellSeparatorStyleNone;