组表视图 - 加载数据
Posted
技术标签:
【中文标题】组表视图 - 加载数据【英文标题】:Group Table View - loading data 【发布时间】:2011-04-17 17:55:48 【问题描述】:寻求有关如何正确加载分组表视图数据的帮助。我正在使用以下代码加载我认为应该为“cellForRowAtIndexPath”准备一个数组“详细信息”的数据。然而,当我运行程序时,我得到所有组的相同数据,它恰好是我数据中的最后一行(在一个名为“Users”的 NSArray 中)。显然我做错了什么,但不确定是什么......请帮忙。
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
NSRange aRange;
aRange.length = 9; aRange.location = 16;
NSString *users = [self.Users objectAtIndex: section];
NSString *subtitle = [NSString stringWithString:[users substringWithRange:aRange]];
details = [[NSArray arrayWithObjects:subtitle, subtitle, subtitle, nil] retain];
return [details count];
数据加载例程如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
// Configure the cell.
UIImage *cellImage = [UIImage imageNamed:@"world.png"];
cell.imageView.image = cellImage;
cell.textLabel.text = [details objectAtIndex:indexPath.row];
return cell;
【问题讨论】:
【参考方案1】:根据您发布的内容,details
数组在每次表视图向其数据源询问一节中的行数时都会被重置。 details
是在最后一次调用 -tableView:numberOfRowsInSection:
时最后设置的,即最后一个部分。设置后,同一数组为所有部分提供cell.textLabel.text
的数据。所以你得到的数据不正确。
计算所有details
数组并将其存储在不同的数组中是合适的,例如detailsArray
。
然后可以像[[detailsArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]
您的代码的另一个问题是,每次调用 numberOfRowsInSection
时,都会泄露数据,因为 details
正在被重置而没有释放较早的对象。
【讨论】:
以上是关于组表视图 - 加载数据的主要内容,如果未能解决你的问题,请参考以下文章