0

我有一个UITableView和一个UIScrollView。滚动视图是分页的。在我的表格视图中,有一个图像和一个标题(自定义单元格)。

我想index根据滚动视图页面随时更改单元格的图像,例如,如果滚动视图页面为 4,则第 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;
}
4

1 回答 1

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"];
}
于 2013-08-31T08:57:28.443 回答