我正在尝试将数据插入到我创建的行中,我将在我的日志中获取所有信息,但它只显示我所有行中的最后一个信息。任何人都可以提出一种避免此错误的方法吗?
请给我一些建议谢谢!
我正在尝试将数据插入到我创建的行中,我将在我的日志中获取所有信息,但它只显示我所有行中的最后一个信息。任何人都可以提出一种避免此错误的方法吗?
请给我一些建议谢谢!
实际上,您永远不会重新填充单元格。您正在创建初始可见单元格,并且只是以相同的内容重用它们。请看下面:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
static NSString *CellIdentifier = @"TestCell";
TestCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// HERE YOU ONLY WANT TO INSTANTIATE THE CELL
NSArray *topObjects = [[NSBundle mainBundle] loadNibNamed:@"TestCell" owner:nil options:nil];
for (id currentObject in topObjects)
{
if([currentObject isKindOfClass:[TestCell class]])
{
cell = (TestCell *) currentObject;
break;
}
}
}
// HERE YOU WOULD ACTUALLY POPULATE THE CELL WITH DATA
NSArray *array = [server get_texts:10 offset:0 sort_by:0 search_for:@""];
NSMutableString *s = [[NSMutableString alloc] init];
for (testMetaData *m in array){
[s appendFormat:@"%@ %@ \n", m.title,m.note];
cell.title.text = m.title;
NSLog(@" title %@ ", m.title);
}
return cell;
}
关于的一些信息UITableView
:
因此,正确设置的 tableView 仅分配和使用有限数量的UITableViewCell
s。分配后,比如说 5 个单元格(这个数字由“在任何给定时间你能看到多少个单元格?”确定),它将采用一个已经创建的单元格,该单元格已经滚动出可见区域,并将其返回给您在您使用的那种方法中,因此您可以重新填充它。因此,cell
变量不会nil
在那个时候出现,并且您的服务器代码永远不会被调用。
我认为这与您的 for 循环有关。
NSMutableString *s = [[NSMutableString alloc] init];
for (testMetaData *m in array){
[s appendFormat:@"%@ %@ \n", m.title,m.note];
cell.title.text = m.title;
NSLog(@" title %@ ", m.title);
}
您cell.title.text = m.title
将在 for 循环结束时获得最后的m.title
信息。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
//Load Cell for reuse
static NSString *CellIdentifier = @"TestCell";
TestCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell =[ [[NSBundle mainBundle] loadNibNamed:@"TestCell" owner:nil options:nil] lastObject];
}
//appending text and config cell
NSArray *array = [server get_texts:10 offset:0 sort_by:0 search_for:@""];
NSString *t = [array objectAtIndex:indexPath.row];
//Config cell - Not sure what you want. Maybe 10 different rows
cell.title.text = t;
return cell;
}