2013-08-31 1 views
0

저는 UITableViewUIScrollView입니다. 스크롤 뷰는 이고 페이징 된입니다. 내 테이블보기에는 이미지와 제목 (사용자 정의 셀)이 있습니다.scrollviewDidScroll에서 tableviewcell을 변경했습니다.

스크롤보기 페이지에 따라 index의 셀 이미지를 변경하고 싶습니다. 예를 들어 스크롤보기 페이지가 4이면 스크롤 할 때 네 번째 셀의 이미지가 변경됩니다 (활성 컬러 이미지). 5 페이지를 보면 4 번째 이미지가 일반 (수동 컬러 이미지)이되고 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

각 페이지의 크기와 스크롤 뷰의 내용 오프셋에서 페이지 번호를 계산하십시오. 페이지 번호는 속성에 저장해야합니다.

if (self.page == indexPath.row) { 
    cell.imgKonuisaret.image=[UIImage imageNamed:@"menuactive.png"]; 
} else { 
    cell.imgKonuisaret.image=[UIImage imageNamed:@"menupassive.png"]; 
} 
+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:)에서 당신이 뭔가를 할 것입니다. 당신은 질문을 이해하지 못합니다 –

+0

페이지를 알고 있으면 모델을 업데이트하여 '현재'이미지를 반영한 ​​다음 테이블보기에서 'reloadData'를 반영합니다. – Wain

+0

테이블 뷰 인덱스에서 이미지를 변경하는 방법을 모르겠다. –