在使用tableview控件进行project项目开发的时候,能通过编译,也没有⚠️,但是进入使用tableview的时候,有一个必现崩溃:
Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]
查看了代码,发现是table view的cell可重用队列返回空引发的,
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
SiteListCell *cell = (SiteListCell*)[tableView dequeueReusableCellWithIdentifier: kSiteOrderTableViewCellIdentifier];
cell.textLabel.text = self.items[indexPath.row];
return cell;
}
当重用队列中的cell是空的时候,被return出来,就导致了这个crash。
解决的方式,是当重用队列中的cell是空的时候,创建这个cell,
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
SiteListCell *cell = [tableView dequeueReusableCellWithIdentifier:
kSiteOrderTableViewCellIdentifier];
if (cell == nil) {
cell = (SiteListCell*)[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:kSiteOrderTableViewCellIdentifier];
}
cell.textLabel.text = self.items[indexPath.row];
return cell;
}