0

UITableViewバックエンドからロードされている曲数があります(実際には曲のURLです)。それらはJSONフォーマットになっています。今私の問題は、曲の数が増えるとテーブルが動かなくなることです。スクロールしにくい。では、どうすればこれを回避できますか?

メインビューの上にビューをロードしています。メインビューでviewDidLoad

  arrSongList=[[NSMutableArray alloc]init];

  arrSongList=[ws GetSongs];`

次に、曲のオプションを選択するメニューがあります。そのメニュー セルをクリックすると、曲のビューが読み込まれます。ソングビューのロード用

-(void)getAllSongsAndReloadTable :(id)sender//1
{
    [viewDisplayArea addSubview:viewSongs];
    [self flipView : viewDisplayArea: viewDisplayArea :  UIViewAnimationTransitionFlipFromLeft];
    [progressAlert dismissWithClickedButtonIndex:0 animated:YES];
}

ViewSongsビューには歌のテーブルがあります。このように読み込まれます

これがためのものですnumberOfRowsInSection

else if (tableView.tag==4) 
{
    return [arrSongList count];
}

これがためのものですcellForRowAtIndexPath

else if (tableView.tag==4)//All Songs
{
    cell4 =nil;

    if (cell4 == nil) {

        NSArray *nib =[[NSBundle mainBundle]loadNibNamed:@"SongCell" owner:self options:nil];
        cell4=[nib objectAtIndex:0];
    }


    [cell4 setSelectionStyle:UITableViewCellSelectionStyleNone];

    cell4.lblSong.text=[[arrSongList objectAtIndex:indexPath.row] valueForKey:@"SONGTITLE"];
    cell4.lblArtist.text=[[arrSongList objectAtIndex:indexPath.row] valueForKey:@"ARTISTNAME"];
    NSString *imgUrl=[[arrSongList objectAtIndex:indexPath.row]valueForKey:@"SONGIMG"];
    NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString: imgUrl]];
    UIImage *img = [[UIImage alloc] initWithData:data];
    cell4.imgSong.image=img;


    NSString *imgUrlLarge=[[arrSongList objectAtIndex:indexPath.row]valueForKey:@"SONGIMGLARGE"];
    NSData *dataLarge=[NSData dataWithContentsOfURL:[NSURL URLWithString: imgUrl]];
    UIImage *imgLarge = [[UIImage alloc] initWithData:dataLarge];
    cell4.imgSongLarge=[[UIImageView alloc]init];
    cell4.imgSongLarge.image=imgLarge;



    [cell4.btnTick addTarget:self action:@selector(tickButtonTapped:) forControlEvents:UIControlEventTouchUpInside] ;

    [cell4.btnAddtoMyList addTarget:self action:@selector(topLeft:) forControlEvents:UIControlEventTouchUpInside];
    return cell4;
}
4

2 に答える 2

0

セルをバッチでロードすることも検討する必要があります。Sensible TableView フレームワークを確認することをお勧めします。フレームワークは、Web サービスからすべての曲を自動的に取得し、必要に応じてバッチに分割します。大量の作業を節約する必要があります。

于 2013-05-27T18:59:04.770 に答える