我有一个包含30个对象的UITableView。 控制器正确显示前13行,在第14行使用“joker”行改变其内容滚动,然后从第13行和“joker”行再次开始直到结束。
这是cellForRowAtIndexPath
方法的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @"cell" forIndexPath:indexPath];
UIImageView * flagImageView = (UIImageView *) [self.view viewWithTag:1];
UILabel * nationLabel = (UILabel *) [self.view viewWithTag:2];
nationLabel.text = [_nationsArray objectAtIndex:indexPath.row];
nationLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
NSLog(@"%i", indexPath.row);
return cell;
}
奇怪的是,在if (cell == nil) { ... }
中配置单元格不起作用......
答案 0 :(得分:0)
不要使用此
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @"cell" forIndexPath:indexPath];
更改您的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @"cell"];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
UIImageView * flagImageView = (UIImageView *) [self.view viewWithTag:1];
UILabel * nationLabel = (UILabel *) [self.view viewWithTag:2];
nationLabel.text = [_nationsArray objectAtIndex:indexPath.row];
nationLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
NSLog(@"%i", indexPath.row);
return cell;
}
答案 1 :(得分:0)
这个问题似乎与国家标签有关。当我更换
UILabel * nationLabel = (UILabel *) [self.view viewWithTag:2];
nationLabel.text = [_nationsArray objectAtIndex:indexPath.row];
带
cell.textLabel.text = [_nationsArray objectAtIndex:indexPath.row];
它工作正常(至少是文本)。所以我认为你应该尝试创建一个UITableViewCell子类,为该标签创建属性,然后查看它是否正常。