【问题标题】:indexPath.row not giving correct value in tableView custom cell iOSindexPath.row 在tableView自定义单元格iOS中没有给出正确的值
【发布时间】:2013-12-29 07:03:48
【问题描述】:

我在cell 的右侧和左侧的imageView 上使用scrollView 自定义cell。现在,当我单击imageView 时,我得到了indexPath.row 的正确值,但是当我单击scrollView indexPath.row 时,返回的是最后一个单击图像的值。有什么建议可以解决这个问题吗?

编辑:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *hlCellID = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:hlCellID];
    if(cell == nil) {
        cell =  [[UITableViewCell alloc]
               initWithStyle:UITableViewCellStyleDefault reuseIdentifier:hlCellID];
        cell.accessoryType = UITableViewCellAccessoryNone;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
    UIScrollView *scrollView = (UIScrollView *)[cell viewWithTag:16];
    scrollView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
    scrollView.delegate = self;
    scrollView.scrollEnabled = YES;
    scrollView.contentSize =   CGSizeMake(scrollView.frame.size.width,scrollView.frame.size.height);
    [scrollView setShowsHorizontalScrollIndicator:NO];
    [scrollView setShowsVerticalScrollIndicator:NO];

    int i=0;
    for(i=0;i<15;i++){
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0+i*100, 0, 100, 100)];
        label.text = @"HELLO";
        label.textColor = [UIColor blackColor];
        label.backgroundColor = [UIColor clearColor];
        label.textAlignment = NSTextAlignmentCenter;
        label.font = [UIFont fontWithName:@"ArialMT" size:18];
        [scrollView addSubview:label];
        scrollView.contentSize = CGSizeMake(scrollView.frame.size.width+i*label.frame.size.width,scrolView.frame.size.height);
    }
    return cell;
}

【问题讨论】:

  • 请显示识别单元格的滚动视图代码。
  • 请分享代码
  • 我在 cellForRowAtIndexPath 方法中添加了设置滚动视图的代码。
  • 如果您有自定义单元格,请创建自定义类并将您的滚动视图和图像视图作为属性连接!这将为您省去很多麻烦。
  • 请在您收到错误值的地方添加您的代码(即您的 didSelect 方法)。您的其他代码无关紧要

标签: ios iphone ipad uitableview uiscrollview


【解决方案1】:
UIScrollView *scrollView = (UIScrollView *)[cell viewWithTag:16];

将上面的行更改为以下内容。

UIScrollView *scrollView = (UIScrollView *)[cell viewWithTag:indexPath.row];

我希望这对你有用..

【讨论】:

  • 标签是在情节提要中设置的值,因此我可以在其中识别我的自定义单元格和滚动视图。 indexPath.row 不是常量值。
  • 但是请告诉我,你想达到什么目的?
  • 我正在尝试制作 EPG,我需要右侧可以左右滑动的节目指南。我需要将tableView中的所有scrollViews设置为在滑动其中一个时滑动,因此我需要在scrollViewDidScroll方法中该单元格的indexPath.row,并且我需要设置其余单元格以使contentOffset与该单元格相同。
  • 然后你可以使用 indexPath.row 获取滚动视图的标签,你可以做任何你想做的事情。
  • 我知道,但是当我在单元格内单击 scrollView 时,indexPath.row 没有返回所选行的正确值,当我在 scrollView 外部单击时,它可以正常工作。
【解决方案2】:

您应该查看此文档参考:responder chain

基本上,您的事件不会在响应者链上上升,因为滚动视图会捕获它。我不知道您要实现什么,但是在滚动视图中包含滚动视图(因为表格本质上是滚动视图)是个坏主意,而且真的很难实现。

【讨论】:

  • 我正在制作EPG,我需要左侧的节目图片,右侧可以左右滑动的节目指南。表格视图本身无法做到这一点。
猜你喜欢
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多