我有一个以编程方式显示内容的UITableView。
第一次打开时单元格加载正常,但滚动后它们都显示相同的标题,我认为是最后一个单元格标题。
如果选择单元格,则打开的基础TableView仍然可以正常工作。
我在SO上查找解决方案,但它们要么对我不起作用,要么我太愚蠢无法理解问题,这看起来是重复使用单元格来获取某种节约资源。
我将发布cellForRowAtIndexPath,因为我认为问题就在那里,如果需要任何进一步的代码,请告诉我。
- (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];
}
NSString *oneLine = [entrys objectAtIndex:position];
NSArray *lineComponents = [oneLine componentsSeparatedByString:@";"];
cell.textLabel.text = [lineComponents objectAtIndex:0];
cell.textLabel.textColor = [UIColor colorWithRed:0.0 green:0.8 blue:0.2 alpha:1.0];
if (position < [entrys count] -2 ) {
position++;
}
return cell;
}
提前致谢
答案 0 :(得分:6)
您根本没有使用indexPath
参数。它应该是:
NSString *oneLine = [entrys objectAtIndex:indexPath.row];
答案 1 :(得分:1)
尝试这一个而不是位置
NSString *oneLine = [entrys objectAtIndex:indexpath.row];
NSArray *lineComponents = [oneLine componentsSeparatedByString:@";"];
cell.textLabel.text = [lineComponents objectAtIndex:0];
cell.textLabel.textColor = [UIColor colorWithRed:0.0 green:0.8 blue:0.2 alpha:1.0];
或
如果它仍然不起作用,那么您的阵列未正确初始化。初始化
答案 2 :(得分:1)
问题出在这里
if (position < [entrys count] -2 ) {
position++;
}
表格中的行数大于数组entrys
,由于这种情况,您的position
会递增到最后一个对象,之后这个条件永远不会被调用,因此position
点最后一个对象。
你能告诉你从tableView:numberOfRowsInSection:
方法回来了什么吗?