Вот вопрос о 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:
Я установил класс в инспекторе удостоверений на SimpleTableViewCell и импортировал файл SimpleTableViewCell.h в свой ChildViewController.h. Я также установил идентификатор «ячейка» в инспекторе атрибутов ячейки представления таблицы, но вот в чем дело. Поскольку я не получаю того вида, который хочу для своей ячейки, я попытался написать его с ошибкой, и ничего не изменилось, так что ясно, что идентификатор ничего не делает. Когда я запускаю свое приложение, я получаю следующее:
Таким образом, загружается массив изображений и заголовков, но не фактический размер ячейки и метки, которые я установил в файле xib для ячейки. Я попытался что-то изменить в ячейке, например цвет фона в инспекторе атрибутов.
а в xib это выглядит так:
но когда я запускаю его:
Я предполагаю, что все это потому, что идентификатор ячейки на самом деле не связан, но я думал, что сделал это в строке:
SimpleTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
Я пропустил здесь какой-то важный код, связал что-то в xib или это просто опечатка? любые предложения высоко ценятся.
////////////////////////////////////////////////// ////////////////////ОБНОВЛЕНИЕ1////////////////////////////// ////////////////////////////////////////////
Я попробовал второе предложение, и результат таков:
Итак, надеюсь, это прольет свет на то, что я делаю неправильно?
Кроме того, я исправил исходный текст, когда я меняю цвет на зеленый, он использует инспектор атрибутов.
Спасибо за вашу помощь.
////////////////////////////////////////////////// ////////////////////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);
}
Теперь моя таблица выглядит так:
Итак, теперь возникает вопрос, как мне добавить фактические значения исходных массивов заголовков и изображений?