我需要知道在滚动时tableView中每个单元格的确切位置。
试过这个,但它只返回null ..可能没有意义。
self.cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (self.cell == nil) {
self.cell = [[Cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
NSNumber *cellOriginY = [NSNumber numberWithFloat:self.cell.frame.origin.y];
[self.cellPositionArray addObject:cellOriginY];
}
我首先尝试管理这个函数我试图像这样添加indexPath:
CGRect visibleRect = (CGRect){.origin = self.tableView.contentOffset, .size = self.view.bounds.size};
CGPoint visiblePoint = CGPointMake(CGRectGetMidX(visibleRect), CGRectGetMidY(visibleRect));
NSIndexPath *visibleIndexPath = [self.tableView indexPathForRowAtPoint:visiblePoint];
哪种工作但后来我发现多个具有相同indexPath的单元格被选中。我猜它是因为indexPath不是唯一的,所以除了用每个单元格的Y轴管理它之外别无选择。 还有其他想法..?
答案 0 :(得分:0)
当我想尝试看看我的单元格是如何格式化的时候,我经常会在标签上调用我的单元格来显示我需要的信息。我假设您使用的是自定义UITableView
课程,这就是您拨打self.cell
而不是创建和返回小区的原因,就像您在所需UITableViewDataSourceProtocol
&#39中所做的那样; S。您没有功能标题,所以我无法说出来,但请使用此协议并确保您拥有self.delegate = self。这应该显示每个单元格您正在寻找的信息。如果您没有分组的tableView,则每次只显示0。每个IndexPath都有两个值:section和row。
-(UITableViewCell *)cellForRowAtIndexPath:(UITableView *)tableView forIndexPath:(NSIndexPath *)indexPath {
if(self.cell == nil) {
UILabel *label = [UILabel new];
label.text = [NSString stringWithFormat:@"Cell %ld in section %ld starting at point %f", indexPath.row, indexPath.section, self.cell.fram.origin.y ];
[self.cell addSubView:label]; //Forgot to add this to first post.
//New Code For CustomViews
CustomView *customView = [self.customViews objectAtIndex:indexPath.row];
[self.cell addSubView:customView];
}
}
希望你能用它来找到你想要的东西。如果您有更多问题,请尝试在头文件中添加有关您正在执行此操作的类的更多信息。 //回答你的其他问题: 我能想到通过一个简单的tableView工作的最佳方法是使用NSArray。最简单的方法是向tableView类添加数组属性。
@property (strong, nonatomic, readwrite) NSMutableArray *customViews;
然后在你的ViewController.m'在' ViewDidLoad'初始化自定义表视图类后初始化您的数组和项目。
'customTableView.customImages = [NSArray arrayWithObjects: cutomView1, customView2, etc..., nil];'
在你有了它的简单之后,我将在之前的答案中添加代码,以便将视图设置为单元格。它将使得第0行将具有objectAtIndex [0],第1行objectAtIndex [1]等。
确保使用更新numberOfRowsInSection
协议方法
`return [self.customImages count]'
这样你的表视图就不会创建超出需要的单元格。
答案 1 :(得分:0)
试试这个,如果>>> ld = [{'ky1':1, 'ky2':2,'ky_3':3},{'ky1':4, 'ky2':5,'ky_4':6},{'ky2':7, 'ky3':8,'ky_5':9}]
>>> res = ld.pop()
>>> for d in ld:
... res = res & d.keys()
...
>>> list(res)
['ky2']
不起作用,可能会使用cell.contentView
上的任何控件。
cell.contentView
答案 2 :(得分:0)
用我已经拥有的代码计算出来。 它可能不是一个很好的方法,但是......现在!
CGRect visibleRect = (CGRect){.origin = self.tableView.contentOffset, .size = self.view.bounds.size};
CGPoint zeroPoint = CGPointMake(CGRectGetMinX(visibleRect), CGRectGetMinY(visibleRect));
每次滚动时,请检查 -
if (zeroPoint.y == (int)visibleIndexPath.row * 380)
380是每个细胞的高度。 虽然,它只在您慢慢滚动时才有效,因此您必须增强if语句。