解决bug:Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]

工程启动之后,是正常显示的,一旦上拉刷新之后就崩溃了。

以前这样写是没问题的啊 = =

代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (self.selected) {
static NSString *identifier = @"cell1";
ChooseTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[ChooseTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
cell.backgroundColor = [UIColor redColor];
return cell;
} else {
static NSString *identifier = @"cell2";
UpTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[UpTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
cell.backgroundColor = [UIColor cyanColor];
return cell;
}
return nil;
}

错误提示:

Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]

原因:

因为 cellForRowAtIndexPath 正在返回一个 nil 值,而
configureCellForDisplay 希望返回一个 UITableViewCell 值。

解决办法:

返回一个 UITableViewCell 值即可。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// **添加一个 UITableViewCell 类型,最后返回 cell 即可。**
static NSString *identifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
cell.backgroundColor = [UIColor yellowColor];
if (self.selected) {
static NSString *identifier = @"cell1";
ChooseTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[ChooseTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
cell.backgroundColor = [UIColor redColor];
return cell;
} else {
static NSString *identifier = @"cell2";
UpTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[UpTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
cell.backgroundColor = [UIColor cyanColor];
return cell;
}
return cell;
}

参考链接:

Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!
技术狗 » 解决bug:Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]