Проблема высоты содержимого UITableView, вызывающая сбой приложения - PullRequest
0 голосов
/ 10 января 2012

У меня есть два UITableView в моем представлении, которое показывает одинаковое содержимое (стихи из Библии), но на другом языке верхний табличный вид показывает английский, а нижний стол показывает hindi. Все работает нормально, но в некоторых главах стих загружает данные в uitableview. сбой приложения, ошибка в этой области

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

    CGSize textSize = [[delegate.allSelectedVerseEnglish objectAtIndex:indexPath.row] sizeWithFont:[UIFont fontWithName:@"Georgia" size:18.0 ]  constrainedToSize:CGSizeMake(280.0f,MAXFLOAT)   lineBreakMode:UILineBreakModeWordWrap];

    return textSize.height +20;

    CGSize textSizehindi = [[tempArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont fontWithName:@"testfont" size:18.0 ]   constrainedToSize:CGSizeMake(280.0f,MAXFLOAT)   lineBreakMode:UILineBreakModeWordWrap];

    return textSizehindi.height +20;

}

, а также после слишком долгого воспроизведения в uitableview, это вызывает замедление прокрутки UITableViewCells. И плавной прокрутки не происходит. Есть ли какие-либо ошибки в приведенном выше коде, которые я получаю при загрузке некоторых глав. Заранее спасибо. EDIT:

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

   static NSString *CellIdentifier = @"Cell";

    readCell *cell = (readCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"readCell" owner:self options:nil]; 
        cell = [nib objectAtIndex:0]; 

        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;

    }
    if(tableView == table)
    {
      UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];
         myBackView.backgroundColor = [UIColor colorWithRed:250.0 green:248.0 blue:192.0 alpha:1.0];
        [myBackView setBackgroundColor:[UIColor colorWithRed:1 green:1 blue:0.75 alpha:1]];
       cell.selectedBackgroundView = myBackView;
        [myBackView release];


        table.backgroundColor = [UIColor clearColor];
        table.separatorColor = [UIColor clearColor];

        cell.chapterAndVerse.text = [NSString stringWithFormat:@"%d",indexPath.row+1];
        cell.chapterAndVerse.font = [UIFont fontWithName:@"Georgia" size:17.0];
        cell.chapterAndVerse.frame=CGRectMake(0, 10, 30.0, 20.0);
        cell.textLabel.text =  [NSString stringWithFormat:@"  %@",[delegate.allSelectedVerseEnglish objectAtIndex:indexPath.row]];

        cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:18];

        cell.backgroundColor = [UIColor clearColor];

    }




    else if(tableView == tab)
    {
        UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];
        myBackView.backgroundColor = [UIColor colorWithRed:250.0 green:248.0 blue:192.0 alpha:1.0];
        [myBackView setBackgroundColor:[UIColor colorWithRed:1 green:1 blue:0.75 alpha:1]];
        cell.selectedBackgroundView = myBackView;
        [myBackView release];

        tab.backgroundColor = [UIColor clearColor];
        tab.separatorColor = [UIColor clearColor];

        cell.chapterAndVerse.text = [NSString stringWithFormat:@"%d",indexPath.row+1];
        cell.chapterAndVerse.font = [UIFont fontWithName:@"Georgia" size:17.0];
        cell.chapterAndVerse.frame=CGRectMake(0, 10, 30.0, 20.0);
        cell.textLabel.text =  [NSString stringWithFormat:@"  %@",[tempArray objectAtIndex:indexPath.row]];

        cell.textLabel.font = [UIFont fontWithName:@"testfont" size:18];

        cell.backgroundColor = [UIColor clearColor];

    }
      return cell; 

}

EDIT2

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == table) {
        return [delegate.allSelectedVerseEnglish count];
    }
    else if (tableView == tab )
    {
        return [tempArray count];

    }



}

Ответы [ 3 ]

1 голос
/ 10 января 2012

сначала сделай одну вещь.перед использованием обоих массивов, NSLog оба массива перед перезагрузкой таблицы.И убедитесь, что оба массива имеют одинаковое количество объектов.это может быть причиной сбоя.

0 голосов
/ 10 января 2012

2-я часть вашего heightForRowAtIndexPath метода никогда не вызывается.Он всегда возвращает return textSize.height +20; Наиболее вероятный способ сбоя - нулевой указатель delegate.allSelectedVerseEnglish или несуществующий шрифт.

0 голосов
/ 10 января 2012

в приведенном выше коде сначала добавьте условия для возврата размера текста для английского и хинди стихов.потому что в настоящее время вы всегда возвращаете размер текста первого английского стиха. Основная проблема, с которой вы сталкиваетесь, заключается не в приведенном выше коде. Проблема должна быть в другом вызове делегата из табличного представления: - CellForRowAtIndexPath.

Можете ли вывставьте свой делегатский вызов CellForRowAtIndexPath сюда, чтобы я мог дать вам больше идеи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...