如何从ios中的Xib文件加载自定义UITableViewCells

时间:2015-12-28 05:13:57

标签: ios objective-c uitableview

嗨,我在iOS和UITableView中非常初学者我使用下面的代码从Xib加载UITableViewCell但是UIFields不能完全适合我的屏幕,请帮助我为什么字段不合适完美?

我的代码: -

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *simpleTableIdentifier = @"MyCell";
    DetailsTableViewCell *cell = (DetailsTableViewCell *)[MaintableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DetailsTableViewCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }
    return cell;
}

- (CGFloat)tableView:(UITableView *)aTableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 100;
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *) cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    cell.contentView.backgroundColor = [Bg colorWithHexString:@"FFB848"];
    UIView * whiteRoundedView = [[UIView alloc]initWithFrame:CGRectMake(0, 10, self.view.frame.size.width, 70)];
    whiteRoundedView.layer.backgroundColor = [Bg colorWithHexString:@"EF4836"].CGColor;
    whiteRoundedView.layer.masksToBounds = NO;
    whiteRoundedView.layer.cornerRadius = 0.0;
    whiteRoundedView.layer.shadowOffset = CGSizeMake(-1, -1);
    [cell.contentView addSubview:whiteRoundedView];
    [cell.contentView sendSubviewToBack:whiteRoundedView];
}

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以按照您的要求设计自定义单元格,并使用所需的边缘插入,这样

enter image description here

所有细胞大小相同,因此容易保持所需的间隙。

注册您的笔尖并将您的自定义单元格用作

[tableName registerNib:[UINib nibWithNibName:@"customCell" bundle:nil] forCellReuseIdentifier:@"customCell"];

希望它有所帮助..快乐编码.. :)

答案 1 :(得分:0)

您无需添加此方法即可使用背景视图

-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *) cell forRowAtIndexPath:(NSIndexPath *)indexPath{

您可以从界面构建器向您的nib文件添加UIView,并围绕角落,您可以为IBOutlet创建UIView属性,然后在DetailsTableViewCell.m内在下面的方法中,执行你的corder round实现。

- (id)initWithCoder:(NSCoder *)aDecoder {  
    self = [super initWithCoder:aDecoder];  
    //your custom initialization code  
    return self;  
} 

答案 2 :(得分:0)

#import "LoadMoreTableViewCell.h"

注册自定义笔尖。

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([LoadMoreTableViewCell class])
                                               bundle:nil]
                               forCellReuseIdentifier:NSStringFromClass([LoadMoreTableViewCell class])];
}

tableView:cellForRowAtIndexPath:委托方法返回自定义单元格。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    return [self loadMoreTableViewCellForTableView:tableView indexPath:indexPath];
}

- (LoadMoreTableViewCell *)loadMoreTableViewCellForTableView:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath {
    LoadMoreTableViewCell *cell =  (LoadMoreTableViewCell *)[tableView dequeueReusableCellWithIdentifier:NSStringFromClass([LoadMoreTableViewCell class])];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}