2013-08-31 7 views
0

У меня есть UITableView и UIScrollView. Прокрутка: paged. В моем представлении таблицы есть изображение и заголовок (Пользовательская ячейка).ios change tableviewcell внутри на scrollViewDidScroll

Я хочу изменить изображение ячейки любым index в соответствии со страницей прокрутки, например, если на странице просмотра прокрутки 4, изображение четвертой ячейки изменится (активное цветное изображение), когда я сделаю прокрутку просмотрите страницу 5, четвертое изображение станет нормальным (пассивное цветное изображение), и изображение 5-й ячейки изменится (активное цветное изображение).

Я хочу изменить изображения во время scrollViewDidScroll. Я не мог найти никаких возможных решений в Интернете. Есть ли способ сделать это?

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    // how do i get page number : 0-768-1536 ---->0 means page1, 768 page 2 ... 
    float currentPos = myScroller.contentOffset.x; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  { 

return konuBaslikListesi.count; 
} 


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
return 90; 
} 


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

KonularCell *cell = [tableView dequeueReusableCellWithIdentifier:@"KonularCell"]; 
if (cell == nil) { 

    cell =[[[NSBundle mainBundle] loadNibNamed:@"KonularCell" owner:self options:nil] objectAtIndex:0]; 
    [cell setAccessoryType:UITableViewCellAccessoryNone]; 
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
} 

cell.Konuismi.numberOfLines = 0; 
[cell.Konuismi setLineBreakMode:NSLineBreakByWordWrapping]; 

cell.Konuismi.text=[[[konuBaslikListesi objectAtIndex:indexPath.row]  objectForKey:@"konu"] objectForKey:@"text"]; 

cell.imgKonuisaret.image=[UIImage imageNamed:@"menupassive.png"]; 

return cell; 
} 

ответ

0

Рассчитайте номер страницы с размера каждой страницы и смещения содержимого прокрутки. Номер страницы должен храниться в свойстве.

CGFloat oldPage = self.page; 

CGFloat offset = scrollView.contentOffset.x; 
CGFloat pageWidth = scrollView.frame.size.width; 

CGFloat page = floorf(offset/pageWidth); 

if (page != oldPage) { 
    self.page = page; 
    [self.tableView reloadData]; 
} 

Затем в методе табличного (cellForRowAtIndexPath:) вы бы что-то вроде:

if (self.page == indexPath.row) { 
    cell.imgKonuisaret.image=[UIImage imageNamed:@"menuactive.png"]; 
} else { 
    cell.imgKonuisaret.image=[UIImage imageNamed:@"menupassive.png"]; 
} 
+0

я уже знаю номер страницы. вы не понимаете вопроса –

+0

После того, как вы знаете страницу, вы обновляете свою модель, чтобы отразить «текущее» изображение, а затем «reloadData» в представлении таблицы. – Wain

+0

Я не знаю, как изменить изображение по этому индексу табличного вида –