UITableViewCell分隔符在iOS9中消失

时间:2015-11-17 06:57:10

标签: ios objective-c uitableview ios9

我已经创建了一个自定义的UITableViewCell,我需要为每个单元格设置一个底线分隔符然后我将分隔符放在我的自定义tableViewCell的init方法中

这是我的TableView代码:

#import "Telegram_TableViewController.h"
#import "Custom_TableViewCell.h"

@interface Telegram_TableViewController ()

@end

@implementation Telegram_TableViewController

- (void)viewDidLoad {
    [super viewDidLoad];



    self.array =[[NSMutableArray alloc] init];

    for (int i=0; i<200; i++) {

        [self.array addObject:[NSString stringWithFormat:@"item %i" ,i]];
    }

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
   }


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return [self.array count] ;
}


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


    NSString *Identifier = @"CELL";

    Custom_TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier];


    cell = [[Custom_TableViewCell alloc] init];

    UILabel *txt = [[UILabel alloc]init];
    txt.text =  [NSString stringWithFormat:@"Item " ] ;

    cell.textLabel.text = [self.array objectAtIndex:indexPath.row];


    return cell;
}

和我的自定义TableViewCell代码:

#import "Custom_TableViewCell.h"

@implementation Custom_TableViewCell

- (void)awakeFromNib {
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}
-(id)init
    {

        self = [super init];

        if (self) {

            UIEdgeInsets insets = self.separatorInset;
            self.separatorInset = UIEdgeInsetsMake(0.0, 0.0,insets.bottom + 6.0, 0.0);
            self.separatorInset = insets;


        }

        return self;
    }

没有错误,但它不起作用。我该如何解决? 提前致谢。

3 个答案:

答案 0 :(得分:0)

Custom_TableViewCell中清理初始化方法,看看这是否有帮助。

Telegram_TableViewController

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


    NSString *Identifier = @"CELL";

    Custom_TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier];


    cell = [[Custom_TableViewCell alloc] init];

    UILabel *txt = [[UILabel alloc]init];
    txt.text =  [NSString stringWithFormat:@"Item " ] ;

    cell.textLabel.text = [self.array objectAtIndex:indexPath.row];

    [tableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];
    [tableView setSeparatorColor:[UIColor blackColor]];


    return cell;
}

确保分隔符的颜色与单元格本身的颜色不同。

答案 1 :(得分:-1)

在您的单元格中使用此代码,s .h文件

@property (nonatomic,strong) UIView* cellSeperatorView;

和.m文件

-(UIView *)cellSeperatorView{
if (!cellSeperatorView) {
    self.cellSeperatorView = [[UIView alloc]    initWithFrame:CGRectZero];
    [self.cellSeperatorView setBackgroundColor:[UIColor lightGrayColor]];
    [self addSubview:self.cellSeperatorView];
}
return cellSeperatorView;
}

-(void)prepareForReuse{

self.cellSeperatorView = nil;

}

-(void)layoutSubviews{
[super layoutSubviews];
[self.cellSeperatorView setFrame:CGRectMake(0, 0, 500, 1)];
}

在你的tableview类中调用此方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)..

UITableViewCellClass *cell = (UITableViewCellClass *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (!cell) {
    cell = [[UITableViewCellClass alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.cellSeperatorView.hidden = (indexPath.row == ([self.yourtableViewArray numberOfRowsInSection:indexPath.section]));

并在viewdidload方法中添加此

[self.yourtableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

我认为这可以帮助你制作分隔符..

答案 2 :(得分:-1)

  1. 当您想要自定义单元格时,最好在方法viewDidLoad中注册。 [self.tableView registerClass:[Custom_TableViewCell class] forCellReuseIdentifier:Identifier];
  2. 什么是cell = [[Custom_TableViewCell alloc] init];?您不是在重复使用单元格,而是每次都启动它。只是不要写这一行。
  3. 覆盖tableViewCell的init方法的正确方法是重写- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
  4. 现在你可以正确地看到tableView了,但我不明白底线分隔符,只需在方法initWithStyle中写下你想要的内容。