我是iPhone应用程序开发的新手。我目前正在进行XML解析。我从xml文件中提取记录并将其存储在可变数组中。我有一个表视图,我从该可变数组加载表视图。我通过调试找到了表格视图中的18行。问题是当我向下滚动到10行时它移动得很好但是当第10行出现时应用程序崩溃了。我得到EXC_BAD_ACCESS
的错误。这是我的代码,其中单元格被加载。谢谢。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
Location *record = [[Location alloc] init];
record = [[parse locationarr] objectAtIndex:indexPath.row];
cell.textLabel.text = record.locationname;
return cell;
}
}
答案 0 :(得分:2)
你发布的代码中有一些错误,首先你只返回一个单元格,表格不会返回一个单元格用于出列
因此,同样更改代码将解决该问题:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
Location *record = [[Location alloc] init];
record = [[parse locationarr] objectAtIndex:indexPath.row];
cell.textLabel.text = record.locationname;
return cell;
}
每次必须alloc
和init
Location
非常昂贵,最好在班级中每次有一个Location
需要。
更好的是只抓取单元格的数据而不是tableVieew:cellForRowAtIndexPath:
方法中的任何冗长方法。
答案 1 :(得分:-1)
您需要编写此代码段
`record = [[parse locationarr] objectAtIndex:indexPath.row];
cell.textLabel.text = record.locationname;`
out of if block。
享受编程!!
答案 2 :(得分:-1)
你的错误是“返回单元格”,它写在if条件里面外面也是行标题标签文本列出的条件。就像这样..
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@“cell”];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
Location *record = [[Location alloc] init];
}
else
{
// get record object here by tag.
}
record = [[parse locationarr] objectAtIndex:indexPath.row];
cell.textLabel.text = record.locationname;
return cell;
}