TableView重复前13行

时间:2013-08-12 09:09:56

标签: ios uitableview

我有一个包含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) { ... }中配置单元格不起作用......

2 个答案:

答案 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子类,为该标签创建属性,然后查看它是否正常。