关闭UITableView中特定UITableViewCell之间的分隔线

时间:2014-11-11 15:15:32

标签: ios objective-c uitableview

无论如何,我可以通过编程方式关闭UITableView中某些单元格之间的界限吗?例如,如果我想关闭第一个和第二个UITableViewCell之间的行,但是在第三个和第四个UITableViewcell之间留下一行。

3 个答案:

答案 0 :(得分:2)

不幸的是,没有办法做到这一点。但是,您可以自己添加一个分隔符作为子视图,并隐藏/删除您希望隐藏它们的单元格。

答案 1 :(得分:2)

你可以移动到目前为止它将被隐藏。

if (indexPath.row == 0) 
{
    cell.separatorInset = UIEdgeInsetsMake(0, 1000, 0, 0);
}

答案 2 :(得分:1)

使用默认分隔符无法实现此目的。您需要隐藏默认值,然后创建UIImageView(您可以使用其他视图,如UIViewUILabel等)对象作为分隔符功能。

我曾使用UIImageView作为分隔符,因为如果在不久的将来您需要将图片作为分隔符而不是简单。

示例代码:

@interface ViewController () <UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, weak) IBOutlet UITableView     *tableView;

@end

@implementation ViewController

- (void) viewDidLoad {
    [super viewDidLoad];

    [self.tableView setDataSource:self];
    [self.tableView setDelegate:self];

    // Hide default seperator.
    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
}

//---------------------------------------------------------------

#pragma mark
#pragma mark UITableView datasource methods

//---------------------------------------------------------------

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 15;
}

//---------------------------------------------------------------

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cellIdentifier = [NSString stringWithFormat:@"CellIdentifier%d%d", indexPath.section, indexPath.row];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
    [cell.textLabel setText:@"Hello"];

    if (indexPath.row > 1) {

        UIImageView *seperatorLine = [[UIImageView alloc] initWithFrame:CGRectMake(0, cell.frame.size.height - 1, cell.frame.size.width, 1)];
        [seperatorLine setBackgroundColor:self.tableView.separatorColor];
        [cell addSubview:seperatorLine];
    }
    return cell;
}

//---------------------------------------------------------------

@end

注意:观察对象cellIdentifier。我创建了唯一的小区标识符,因为如果您在此处指定static,它将对所有小区使用相同的标识符。在滚动表格视图后,您还将在第一个和第二个单元格上看到分隔符。