我有一个UITableView
来自后端的加载次数(实际上那些是歌曲的网址)。这些是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;
}
答案 0 :(得分:1)
你将拥有一系列歌曲网址。并且您可以将表中的行数指定为arrayOfUrlSongs.count。取而代之的是
进行全球统计 int count = 10;
if(arrayOfUrlSongs.count < count)
return arrayOfUrlSongs.count;
else
{
return count;
}
在表格的页脚视图中保留重新加载按钮。单击该增量计数10并重新加载表。
我希望这会对你有所帮助。
答案 1 :(得分:0)
您还应该考虑批量加载细胞。我建议查看Sensible TableView框架。该框架将自动从您的Web服务中获取所有歌曲,并根据需要分批分割。应该为你节省大量的工作。