Я пытаюсь вывести свой NSMutableArray в UITableView, отображается tableView, но это вывод неправильных данных. Я ожидал что-то вроде этогоUITableViewCell, отображающий неверные данные
Check 10
Try 11
Test 12
Вот мой код
- (void)viewDidLoad
{
arr1 = [[NSMutableArray alloc] initWithObjects:@"Check",@"Try",@"Test" ,nil];
arr2 = [[NSMutableArray alloc] initWithObjects:@"10",@"11",@"12", nil];
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 400, 500, 500)];
self.tableView.dataSource = self;
self.delegate = self;
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cells"];
[self.view addSubview:self.tableView];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cells" forIndexPath:indexPath];
UIImageView *images = [[UIImageView alloc] initWithFrame:CGRectMake(8, 8, 50, 50)];
[images setImage:[UIImage imageNamed:[img objectAtIndex:indexPath.row]]];
[cell addSubview:images];
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(131, 27, 59, 21)];
label1.text = [arr1 objectAtIndex:indexPath.row];
[cell addSubview:label1];
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(231, 27, 67, 21)];
label2.text = [arr2 objectAtIndex:indexPath.row];
[cell addSubview:label2];
return cell;
}
И это выход
Check 10
Try 11
Check 10
ли не вы должны установить тег для каждого из объектов UILabel, если вы собираетесь использовать пользовательский UITableViewCell? –
@ElTomato - Нет, так мы это делали много лет назад, но эта практика теперь обескуражена. В настоящее время наилучшей практикой является использование прототипа клетки, установка базового класса и подключение выходов в IB. Но вы определенно не должны просто добавлять subviews, как он здесь, так как при повторном использовании ячеек будут добавлены дубликаты меток. Или, если он собирается создавать программно, он должен проверить, действительно ли ячейка была удалена, и добавлять только объекты, если это новая ячейка. И он обновил свои свойства, чтобы указать на эти метки, а не на теги. – Rob
drbj, вы действительно имеете дело только с тремя ячейками? Ваш код может привести к описанию поведения, которое вы описываете, только если ячейки прокручивались вне поля зрения, а другие ячейки прокручиваются в представлении (и, как правило, вы видели это поведение только в том случае, если у вас было достаточно нескольких строк данных). – Rob