Что является ошибкой в ​​этом коде, так что он падает? - PullRequest
0 голосов
/ 13 сентября 2011

Я использую табличное представление, в котором я показываю 10 строк таблицы по пользовательской ячейке, а одна - по обычной ячейке.Я использовал этот код ...

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    static NSString *CellIdentifier=@"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (indexPath.row == [listofBusiness count]) {

        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
            }

    cell.textLabel.text= @"Show more...";
    //cell = self.tvcell;
    return cell;

}

else if(indexPath.row==[appDelegate.busines_Aray count])
{

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    return cell;

}

if(customCell == nil) {
    [[NSBundle mainBundle] loadNibNamed:@"Place_cell" owner:self options:nil];
}


// Configure the cell...


    cell.backgroundColor=[UIColor colorWithRed:0.92 green:0.92 blue:0.92 alpha:1];
    cell.accessoryType = UITableViewCellAccessoryNone;
    cell.selectionStyle=UITableViewCellSelectionStyleNone;
    BusinessData *business_datas = [appDelegate.busines_Aray objectAtIndex:indexPath.row];  
    UITextField *tmptxt;
    tmptxt = (UITextField *)[cell viewWithTag:1];
    tmptxt.backgroundColor=[UIColor clearColor];
    tmptxt.text = [NSString stringWithFormat:@"%@",business_datas.name_business ];
    tmptxt = (UITextField *)[cell viewWithTag:2];
    tmptxt.text = [NSString stringWithFormat:@"%@", business_datas.cat_business];   
    tmptxt = (UITextField *)[cell viewWithTag:3];
    tmptxt.backgroundColor=[UIColor clearColor];
    tmptxt.text = [NSString stringWithFormat:@"%d",business_datas.noofreview];

    if(business_datas.avg_rating ==0.0)
    {
        CGRect myImage1 =CGRectMake(190,5,20,22);
        UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
        [imageView1 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView1];
        [imageView1 release]; 
        CGRect myImage2 =CGRectMake(210,5,20,22);
        UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
        [imageView2 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView2];
        [imageView2 release]; 
        CGRect myImage3 =CGRectMake(230,5,20,22);
        UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
        [imageView3 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView3];
        [imageView3 release]; 
        CGRect myImage4 =CGRectMake(250,5   ,20,22);
        UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
        [imageView4 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView4];
        [imageView4 release]; 
        CGRect myImage5 =CGRectMake(270,5,20,22);
        UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
        [imageView5 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView5];
        [imageView5 release]; 

    }
    else if(business_datas.avg_rating ==0.5)
    {
        CGRect myImage1 =CGRectMake(190,5,20,22);
        UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
        [imageView1 setImage:[UIImage imageNamed:@"Black-Half.png"]];
        [cell addSubview:imageView1];
        [imageView1 release]; 
        CGRect myImage2 =CGRectMake(210,5,20,22);
        UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
        [imageView2 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView2];
        [imageView2 release]; 
        CGRect myImage3 =CGRectMake(230,5,20,22);
        UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
        [imageView3 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView3];
        [imageView3 release]; 
        CGRect myImage4 =CGRectMake(250,5,20,22);
        UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
        [imageView4 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView4];
        [imageView4 release]; 
        CGRect myImage5 =CGRectMake(270,5,20,22);
        UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
        [imageView5 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView5];
        [imageView5 release]; 

    }
    else if(business_datas.avg_rating ==1.0)
    {
        CGRect myImage1 =CGRectMake(190,5,20,22);
        UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
        [imageView1 setImage:[UIImage imageNamed:@"star.png"]];
        [cell addSubview:imageView1];
        [imageView1 release]; 
        CGRect myImage2 =CGRectMake(210,5,20,22);
        UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
        [imageView2 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView2];
        [imageView2 release]; 
        CGRect myImage3 =CGRectMake(230,5,20,22);
        UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
        [imageView3 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView3];
        [imageView3 release]; 
        CGRect myImage4 =CGRectMake(250,5,20,22);
        UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
        [imageView4 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView4];
        [imageView4 release]; 
        CGRect myImage5 =CGRectMake(270,5,20,22);
        UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
        [imageView5 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView5];
        [imageView5 release]; 

    }
    else if(business_datas.avg_rating ==1.5)
    {
        CGRect myImage1 =CGRectMake(190,5,20,22);
        UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
        [imageView1 setImage:[UIImage imageNamed:@"star.png"]];
        [cell addSubview:imageView1];
        [imageView1 release]; 
        CGRect myImage2 =CGRectMake(210,5,20,22);
        UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
        [imageView2 setImage:[UIImage imageNamed:@"Black-Half.png"]];
        [cell addSubview:imageView2];
        [imageView2 release]; 
        CGRect myImage3 =CGRectMake(230,5,20,22);
        UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
        [imageView3 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView3];
        [imageView3 release];       
        CGRect myImage4 =CGRectMake(250,5,20,22);
        UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
        [imageView4 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView4];
        [imageView4 release]; 
        CGRect myImage5 =CGRectMake(270,5,20,22);
        UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
        [imageView5 setImage:[UIImage imageNamed:@"emStar.png"]];
        [cell addSubview:imageView5];
        [imageView5 release]; 
    }

    else if(business_datas.avg_rating ==2.0)
    {
    CGRect myImage1 =CGRectMake(190,5,20,22);
    UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
    [imageView1 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView1];
    [imageView1 release]; 
    CGRect myImage2 =CGRectMake(210,5,20,22);
    UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
    [imageView2 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView2];
    [imageView2 release]; 
    CGRect myImage3 =CGRectMake(230,5,20,22);
    UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
    [imageView3 setImage:[UIImage imageNamed:@"emStar.png"]];
    [cell addSubview:imageView3];
    [imageView3 release]; 
    CGRect myImage4 =CGRectMake(250,5,20,22);
    UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
    [imageView4 setImage:[UIImage imageNamed:@"emStar.png"]];
    [cell addSubview:imageView4];
    [imageView4 release]; 
    CGRect myImage5 =CGRectMake(270,5,20,22);
    UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
    [imageView5 setImage:[UIImage imageNamed:@"emStar.png"]];
    [cell addSubview:imageView5];
    [imageView5 release]; 
}
else if(business_datas.avg_rating ==2.5)
{
    CGRect myImage1 =CGRectMake(190,5,20,22);
    UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
    [imageView1 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView1];
    [imageView1 release]; 
    CGRect myImage2 =CGRectMake(210,5,20,22);
    UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
    [imageView2 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView2];
    [imageView2 release]; 
    CGRect myImage3 =CGRectMake(230,5,20,22);
    UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
    [imageView3 setImage:[UIImage imageNamed:@"Black-Half.png"]];
    [cell addSubview:imageView3];
    [imageView3 release]; 
    CGRect myImage4 =CGRectMake(250,5,20,22);
    UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
    [imageView4 setImage:[UIImage imageNamed:@"emStar.png"]];
    [cell addSubview:imageView4];
    [imageView4 release]; 
    CGRect myImage5 =CGRectMake(270,5,20,22);
    UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
    [imageView5 setImage:[UIImage imageNamed:@"emStar.png"]];
    [cell addSubview:imageView5];
    [imageView5 release]; 

}

else if(business_datas.avg_rating ==3.0)
{
    CGRect myImage1 =CGRectMake(190,5,20,22);
    UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
    [imageView1 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView1];
    [imageView1 release]; 
    CGRect myImage2 =CGRectMake(210,5,20,22);
    UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
    [imageView2 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView2];
    [imageView2 release]; 
    CGRect myImage3 =CGRectMake(230,5,20,22);
    UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
    [imageView3 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView3];
    [imageView3 release]; 
    CGRect myImage4 =CGRectMake(250,5   ,20,22);
    UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
    [imageView4 setImage:[UIImage imageNamed:@"emStar.png"]];
    [cell addSubview:imageView4];
    [imageView4 release]; 
    CGRect myImage5 =CGRectMake(270,5,20,22);
    UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
    [imageView5 setImage:[UIImage imageNamed:@"emStar.png"]];
    [cell addSubview:imageView5];
    [imageView5 release]; 

}
else if(business_datas.avg_rating ==3.5)
{
    CGRect myImage1 =CGRectMake(190,5,20,22);
    UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
    [imageView1 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView1];
    [imageView1 release]; 
    CGRect myImage2 =CGRectMake(210,5,20,22);
    UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
    [imageView2 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView2];
    [imageView2 release]; 
    CGRect myImage3 =CGRectMake(230,5,20,22);
    UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
    [imageView3 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView3];
    [imageView3 release]; 
    CGRect myImage4 =CGRectMake(250,5,20,22);
    UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
    [imageView4 setImage:[UIImage imageNamed:@"Black-Half.png"]];
    [cell addSubview:imageView4];
    [imageView4 release]; 
    CGRect myImage5 =CGRectMake(270,5,20,22);
    UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
    [imageView5 setImage:[UIImage imageNamed:@"emStar.png"]];
    [cell addSubview:imageView5];
    [imageView5 release]; 

}
else if(business_datas.avg_rating ==4.0)
{
    CGRect myImage1 =CGRectMake(190,5,20,22);
    UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
    [imageView1 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView1];
    [imageView1 release]; 
    CGRect myImage2 =CGRectMake(210,5,20,22);
    UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
    [imageView2 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView2];
    [imageView2 release]; 
    CGRect myImage3 =CGRectMake(230,5,20,22);
    UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
    [imageView3 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView3];
    [imageView3 release]; 
    CGRect myImage4 =CGRectMake(250,5,20,22);
    UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
    [imageView4 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView4];
    [imageView4 release]; 
    CGRect myImage5 =CGRectMake(270,5,20,22);
    UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
    [imageView5 setImage:[UIImage imageNamed:@"emStar.png"]];
    [cell addSubview:imageView5];
    [imageView5 release]; 

}
else if(business_datas.avg_rating ==4.5)
{
    CGRect myImage1 =CGRectMake(190,5,20,22);
    UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
    [imageView1 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView1];
    [imageView1 release]; 
    CGRect myImage2 =CGRectMake(210,5,20,22);
    UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
    [imageView2 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView2];
    [imageView2 release]; 
    CGRect myImage3 =CGRectMake(230,5,20,22);
    UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
    [imageView3 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView3];
    [imageView3 release];       
    CGRect myImage4 =CGRectMake(250,5,20,22);
    UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
    [imageView4 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView4];
    [imageView4 release]; 
    CGRect myImage5 =CGRectMake(270,5,20,22);
    UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
    [imageView5 setImage:[UIImage imageNamed:@"Black-Half.png"]];
    [cell addSubview:imageView5];
    [imageView5 release]; 
}

else //if(business_datas.avg_rating ==5.0)
{
    CGRect myImage1 =CGRectMake(190,5,20,22);
    UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:myImage1];
    [imageView1 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView1];
    [imageView1 release]; 
    CGRect myImage2 =CGRectMake(210,5,20,22);
    UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:myImage2];
    [imageView2 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView2];
    [imageView2 release]; 
    CGRect myImage3 =CGRectMake(230,5,20,22);
    UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:myImage3];
    [imageView3 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView3];
    [imageView3 release]; 
    CGRect myImage4 =CGRectMake(250,5,20,22);
    UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:myImage4];
    [imageView4 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView4];
    [imageView4 release]; 
    CGRect myImage5 =CGRectMake(270,5 ,20,22);
    UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:myImage5];
    [imageView5 setImage:[UIImage imageNamed:@"star.png"]];
    [cell addSubview:imageView5];
    [imageView5 release]; 
}







return cell;

}

Когда компилятор входит в этот код, выдает следующую ошибку ...

2011-09-13 12: 24: 13.641 Yelp-OnTheWay [8739: 207] * Ошибка подтверждения в - [UITableView _createPreparedCellForGlobalRow: withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1447.6.4/UITableView.m:56 201113 12: 24: 13.643 Yelp-OnTheWay [8739: 207] Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «UITableView dataSource должен возвращать ячейку из tableView: cellForRowAtIndexPath: '**Стек вызовов при первом броске: (0 CoreFoundation 0x012bebe9 exceptionPreprocess + 185 1 libobjc.A.dylib 0x014135c2 objc_exception_throw + 47 2 CoreFoundation 0x01277628 + [повышение NSException: формат: аргументы:] + 136 3 дескриптор объекта 0x00167BH74747_HD: file: lineNumber: описание:] + 116 4 UIKit 0x003e08f3 - [UITableView (UITableViewInternal) _createPreparedCellForGlobalRow: withIndexPath:]+ 883 5 UIKit 0x003d677f - [UITableView (UITableViewInternal) _createPreparedCellForGlobalRow:] + 75 6 UIKit 0x003eb450 - [UITableView (_UITableViewPrivate) _updateVisibleCellsNow:] + 0502S350-UC3S3503S3502S3503S3503S3503S3S350-UC3S350-UC3S3S3S3S-0503S UCIT UBIT UBIT UBIT UBIT UBIT UBIT UBITS UCITSELSELCALCELSELSELSALSELSELCALSELCELSELSELSELSINGCELS.9 QuartzCore 0x00fca17c CALayerLayoutIfNeeded + 220 10 QuartzCore 0x00fc337c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310 11 QuartzCore 0x00fc30d0 _ZN2CA11Transaction6commitEv + 292 12 QuartzCore 0x00ff37d5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99 13 CoreFoundation 0x0129ffbb __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 27 14 CoreFoundation 0x012350e7 __CFRunLoopDoObservers + 295 15 CoreFoundation 0x011fdbd7 __CFRunLoopRun + +1575 16 CoreFoundation 0x011fd240 CFRunLoopRunSpecific +208 17 CoreFoundation 0x011fd161 CFRunLoopRunInMode + 97 18 графических сервисов 0x01b60268 GSEventRunModal + 217 19 графических сервисов 0x01b6032d GSEventRun + 115 20 UIKit 0x0037b42e UIApplicationMain + 1160 21 Yelp-OnTheWay 0x00002154 main + 102 22 Yelp-OnTheWay 0x000020e5 start + 53) завершить вызов после сброса экземпляра «NSException» Программа получила сигнал: «SIGABRT».kill quit

Как удалить это?

Заранее спасибо ...

1 Ответ

1 голос
/ 13 сентября 2011

Если вы используете ячейки двух разных типов, вам нужно использовать два идентификатора повторного использования.

Не ясно, что такое customCell или когда для него когда-либо будет установлено что-либо.

Вы не должны постоянно создавать экземпляры и добавлять новые изображения.Это приведет к тому, что повторно используемая ячейка будет иметь несколько изображений друг на друге.Представления изображений должны быть добавлены при первом создании ячейки и настроены при повторном ее использовании.Хотя похоже, что вы используете 5 видов изображений для показа звездного рейтинга, вы можете добиться этого с помощью текста, который я считаю, используя звездные символы Юникода.

Ваш код сбой, потому что вы попадаете в раздел кода //Configure the cell..., в этот момент cell равен нулю, вы затем возвращаете nil, что вызывает исключение, какВы должны вернуть объект UITableViewCell.

Изучите функции повторного использования ячейки в документации и примените шаблон там.Это довольно просто:

  • Определить идентификатор повторного использования на основе вашего indexPath
  • Попытка удалить из очереди ячейку с этим идентификатором
  • Если ничего не возвращается, создайтеячейку или загрузите ее из пера, создавая любые подпредставления в этой точке
  • Настройте ячейку и любые подпредставления вашей удаленной или только что созданной ячейки
  • Верните заполненную ячейку
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...