我在滚动tableview时收到EXC_BadAccess错误消息。
以下是我在cellForRowAtIndexPath中完成的代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier=@"customCellHistory";
customCellHistory *cell=(customCellHistory*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects=[[NSBundle mainBundle]loadNibNamed:@"customCellHistory" owner:self options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]] ) {
cell=(customCellHistory*)currentObject;
break;
}
}
}
cell.lb11.text=[cellArray1 objectAtIndex:indexpath.row];
cell.lbl2.text=[cellArray2 objectAtIndex:indexpath.row];
return cell;
}
我可以感觉到问题是由于上述代码中的一些错误引起的。
我在上面的代码中使用了CustomCell来显示自定义单元格。
任何人都可以告诉我在这段代码中做了什么错误
答案 0 :(得分:1)
嘿,请尝试以下代码,不要忘记自定义XIB中的set the cell identifier
到customCellHistory
在顶部
#import "customeCellHistory.h"
然后
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"customCellHistory";
customCellHistory *cell = (customCellHistory *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"customCellHistory" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.lb11.text=[cellArray1 objectAtIndex:indexpath.row];
cell.lbl2.text=[cellArray2 objectAtIndex:indexpath.row];
return cell;
}
答案 1 :(得分:0)
问题似乎来自你所拥有的奇怪循环。使用最后一个对象方法从笔尖设置单元格。
答案 2 :(得分:0)
您正在重复使用单元格,然后更改循环中的单元格,这可能会导致单元格不存在于您正在查找的位置。
答案 3 :(得分:0)
if (cell == nil) {
NSArray *topLevelObjects=[[NSBundle mainBundle]loadNibNamed:@"customCellHistory" owner:self options:nil];
您不需要该代码。只需在早期的表格视图中注册nib:
[self.tableView registerNib:[UINib nibWithNibName:@"customCellHistory" bundle:nil]
forCellReuseIdentifier:@"customCellHistory"];
现在当你调用dequeueReusableCellWithIdentifier
时,如果重用堆中没有备用单元,则将加载nib并传送单元。这可确保您始终拥有一个单元格,并确保它是正确的单元格。使用框架为您提供的方法。