0

我有一个包含 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) { ... }不起作用......

4

2 回答 2

0

Don't use this

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @"cell" forIndexPath:indexPath];

Change your code:

- (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;
    }
于 2013-08-12T09:15:13.230 回答
0

问题似乎出在国家标签上。当我更换

UILabel * nationLabel = (UILabel *) [self.view viewWithTag:2];

nationLabel.text = [_nationsArray objectAtIndex:indexPath.row];

cell.textLabel.text = [_nationsArray objectAtIndex:indexPath.row];

它工作正常(至少是文本)。所以我认为你应该尝试创建一个 UITableViewCell 子类,为该标签创建属性,然后看看是否可以。

于 2013-08-12T12:46:19.913 回答