美文网首页
解决bug:Assertion failure in -[UIT

解决bug:Assertion failure in -[UIT

作者: 伯牙呀 | 来源:发表于2017-08-15 17:21 被阅读69次

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

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

    代码如下:

    - (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 -[UIT

          本文链接:https://www.haomeiwen.com/subject/oozyrxtx.html