2010-08-28 88 views
2

奇怪的问题,我创建一个UITableView,设置8行数据。简而言之,我只是返回indexpath行来尝试找出错误,但最终,任何屏幕外的行似乎都以奇怪的顺序加载。UITableViewCell显示索引路径行乱序

例如,行0,1,2,3,4,5在第一次加载时都显示为正常,但随后屏幕上出现6 & 7。当我滚动到他们时,我通常会看到行6和0,或6和1.然后,当我向后滚动时,我会看到行7出现在表格的顶部。

这里是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

     [cell.textLabel setText:[NSString stringWithFormat:@"Row: %d", [indexPath row]]]; 
    } 

    return cell; 
} 

我是不是很笨?干杯

回答

0

在if语句中创建单元格,然后在if语句之外设置属性(即标签)。

+0

这很奇怪,因为如果你没有一个单元格,它应该创建单元格。现在如果一个单元格存在,它应该重用它,但文本可能是旧值,所以你应该重置标签 – Rudiger 2010-08-28 21:55:43

+0

如果你创建一个空白的导航iPhone应用程序与Xcode它给你上面的代码(没有标签部分) – mootymoots 2010-08-28 21:56:32

+0

只该标签应该设置在if语句之外。该模板对于创建单元格是正确的。 – Rudiger 2010-08-28 22:00:27

1

可以使用

的NSString * cellIdentifier = [NSString的stringWithFormat:@ “%d”,indexPath.row];

代替

静态的NSString * CellIdentifier = @ “小区”;

+0

在发布复制和粘贴样板/逐字回答多个问题时要小心,这些问题往往会被社区标记为“垃圾”。 – Kev 2011-08-09 10:55:02

+0

感谢这对我工作:D – 2013-02-26 21:52:34