2013-05-27 2 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 thnk u so much, Как я могу обновить таблицу, есть ли какой-либо метод для обновления этой таблицы, когда index.ro достигает точного числа rartherthan reload method? – iDia

+1

Сколько URL-адресов будет отображаться? Вид таблицы не застрянет. можете ли вы опубликовать свой код, тогда люди могут дать вам предложения –

ответ

1

Вы будете иметь множество песен URLs. И вы бы дали количество строк в таблице как arrayOfUrlSongs.count. Вместо этого сделать

Сделать глобальный счет int count = 10;

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

Сохраните кнопку перезагрузки в нижнем колонтитуле стола. При щелчке этого значения увеличивается на 10 и перезагружает таблицу.

Надеюсь, это вам поможет.

0

Вы также должны рассмотреть возможность загрузки ячеек в партии. Я бы рекомендовал проверить структуру Sensible TableView. Рамка автоматически выберет все песни из вашего веб-сервиса и по возможности разделит их партиями. Должна сэкономить массу усилий.

Смежные вопросы