2013-05-27 44 views
0

我有一个UITableView它的后端歌曲(实际上这些是歌曲的网址)的加载数量。那些正在获得JSON格式。现在我的问题是,当歌曲数量增加表卡。很难滚动。那么我怎样才能避免这种情况?如何加载UITableview部分零件

我正在加载视图顶部的主视图。在主视图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

你可以在这篇文章中看到我的答案,可以帮助你:http://stackoverflow.com/questions/16213603/load-large-data-from-multiple-tables-paralelly-multithreading/16214574#16214574 – Amit

+0

@ amit3117如何更新表,有没有什么方法来更新该表,当index.ro达到确切数rartherthan重新加载方法? – iDia

+1

需要显示多少首歌曲?表格视图不会像那样卡住。你可以发布你的代码然后人们可以给你建议 –

回答

1

你将有歌曲的URL的数组。你可以在表中将行数设为arrayOfUrlSongs.count。取而代之的是:

全球统计 int count = 10;

if(arrayOfUrlSongs.count < count) 
     return arrayOfUrlSongs.count; 
else 
{ 
    return count; 
} 

在表格的页脚视图中保留重载按钮。点击增加计数10并重新加载表格。

我希望这可以帮助你。

0

您还应该考虑分批加载单元格。我建议检查Sensible TableView框架。如果您愿意,该框架会自动从您的Web服务中获取所有歌曲并将其分批分割。应该为你节省大量的工作。