2010-11-29 7 views
1

iphoneにアプリケーションを配備するときに、シミュレータで検出されなかったこの問題があります。iphoneカスタムセルでテーブルビューをスクロールするのが遅すぎる

このcellforrowのコード...

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

    NSLog(@"beginning cellforRowAtIndexPath for section %d, and cell %d",[indexPath indexAtPosition:0],[indexPath indexAtPosition:1]); 

    static NSString *MyIdentifier = @"MyIdentifier"; 
    NSString *fieldTitle; 
    NSString*fieldDescription; 
    [_stopWatch start]; 
    [PersonalSection GetField:&fieldTitle AndValue:&fieldDescription UsingIndexPath:indexPath AndPersonalInformation:_personalInfo]; 


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    if (cell == nil) { 
     [[NSBundle mainBundle] loadNibNamed:@"ViewContent" owner:self options:nil]; 
     cell = tvCell; 
     self.tvCell=nil; 

     ((UILabel*) [cell.contentView viewWithTag:1]).layer.cornerRadius=11; 
     ((UILabel*) [cell.contentView viewWithTag:2]).layer.cornerRadius=11; 
    } 


    UILabel*mainLabel=(UILabel*) [cell.contentView viewWithTag:1]; 
    mainLabel.text=fieldTitle; 
    //mainLabel.textColor = [UIColor colorWithRed:0.745 green:0.116 blue:0.176 alpha:1.0]; 

    UILabel*detailLabel=(UILabel*)[cell.contentView viewWithTag:2]; 
    detailLabel.text=fieldDescription; 
    [_stopWatch stop]; 
    NSLog(@"---------End cellforRowAtIndexPath"); 

    return cell; 
} 

残りはセクションのためであり、それはそこにリターン3または5のような本当のボトルネックません。 私は何がそんなに遅くなっているのだろうかと思っています。 データの取り込み "[PersonalSection GetField:& fieldTitle ..."はかなり高速です.iphoneの最大値は0.1 msです。問題は別の場所で、私はこのコードを最適化する方法があると思います。カスタムセルの影響については、このViewControllerにリンクされたラベルとテキストフィールドを持つセルだけです。 アイデア

答えて

4

[OK]、主なパフォーマンスの問題は、contentviewのサブビューの角を丸めることでした。 使用QuartzCore:

#import <QuartzCore/QuartzCore.h> 
((UILabel*) [cell.contentView viewWithTag:1]).layer.cornerRadius=11; 

私はそれらを削除し、区分表のセル内に収まるようにコントロールのサイズを減少させました。今は丸く見えますが、テキストフィールドとラベルは見えません。 これは私のスクロール性能を顕著に改善しました。 ご協力いただきありがとうございます。

+0

それは実際にパフォーマンスとレンダリングの間の選択です。 – Kjuly

+0

これは私と同じ問題です。これを解決する唯一の方法は、cornerRadiusをシミュレートするUIImageViewを使うか、あなたが言ったことをすることです。 –

4

セルを作成するときに識別子を@ "cell"に設定しますが、デキューするときには "MyIdentifier"を探しています。それはあなたが毎回セルを再作成しているように見えます。

+0

実際に私は同じ識別子を使用してデキューしていますが、うん、それは間違ったことです。しかし、私は間違ったコードを投稿している、私はそれを更新しました。 – LolaRun

関連する問題