TableViewCell不显示布局

时间:2016-02-01 20:13:25

标签: objective-c xcode uitableview identifier tableviewcell

这是关于tableViewCell的问题。我第一次在桌子上查看我的手,并试图让我的头围绕可重复使用的细胞等。我已经设法让它在某种程度上起作用。我有一个tableView,它存在于子视图控制器上,它是它的委托和数据源。代表代码:

#import "ChildViewController.h"

@interface ChildViewController ()

@property NSArray *titles;

@property NSArray *thumblenails;

@end

@implementation ChildViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.titles = [NSArray arrayWithObjects:@"Title 1", @"Title 2", @"Title 3", @"Title 4",nil];

    self.thumblenails = [NSArray arrayWithObjects:@"Image1", @"Image2", @"Image3", @"Image4", nil];

}


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

    return self.titles.count;
}

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

    SimpleTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableViewCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

//  cell.textLabel.backgroundColor = [UIColor greenColor];

    cell.textLabel.text = [self.titles objectAtIndex:indexPath.row];
    cell.imageView.image = [UIImage imageNamed:[self.thumblenails objectAtIndex:indexPath.row]];

    return cell;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

我还有一个SimpleTableViewCell.xib:

enter image description here

我已将身份检查器上的类设置为SimpleTableViewCell,并将SimpleTableViewCell.h文件导入到ChildViewController.h中。我还在表视图单元格的属性检查器中将标识符设置为“单元格”,但这是事情。由于我没有得到我想要的单元格,我试过拼写错误,没有任何改变,所以标识符没有做任何事情。当我运行我的应用程序时,我得到了这个:

enter image description here

因此正在加载图像和标题数组,但不是我在单元格的xib文件上设置的实际单元格大小和标签。我尝试在单元格中更改某些内容,例如属性检查器中的背景颜色。

在xib上它看起来像这样:

enter image description here

但是当我运行它时:

enter image description here

我猜这一切都是因为单元格标识符实际上没有链接,但我认为我已经完成了这一行:

 SimpleTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

我在这里错过了一些重要的编码,在xib中链接某些内容,还是只是一个错字?任何建议都非常感激。

/////////////////////////////////////////////// /////////////////////// UPDATE1 ////////////////////////// //////////////////////////////////////////////

我已经尝试了第二个建议,结果如下:

enter image description here

所以,希望这会对我做错了什么有所启发?

此外,我更正了原始文本,当我使用属性检查器将颜色更改为绿色时。

感谢您的帮助。

/////////////////////////////////////////////// /////////////////////// UPDATE2 ////////////////////////// //////////////////////////////////////////////

我删除了这些行:

 cell.textLabel.text = [self.titles objectAtIndex:indexPath.row];
 cell.imageView.image = [UIImage imageNamed:[self.thumblenails objectAtIndex:indexPath.row]];

另外,添加了代码:

[self.tableView registerNib:[UINib nibWithNibName:@"SimpleTableCell" bundle:nil] forCellReuseIdentifier:@"cell"];

和代码:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return [UIScreen mainScreen].bounds.size.width * (0.3);
}

现在我的表看起来像这样:

enter image description here

现在问题是如何添加原始标题和图像数组的实际值?

2 个答案:

答案 0 :(得分:0)

您忘记为小区标识符注册nib。 将[self.tableView registerNib:[UINib nibWithNibName:@"SimpleTableViewCell" bundle:nil] forCellReuseIdentifier:@"cell"];添加到viewDidLoad方法。

你可以删除

if (cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableViewCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}

答案 1 :(得分:0)

您应该设置单元格的高度以在nib文件中获得完全相同的外观。使用此委托方法设置单元格的高度。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return [UIScreen mainScreen].bounds.size.width * (0.3);// 0.3 should be your aspect ratio for cell:
    // for cell.height/ cell.width in nib file.

}