insertSubview:belowSubview:在UITableViews中

时间:2012-02-27 03:25:57

标签: iphone objective-c ios uitableview uiview

我有UITableView UITableViewCell个可转换的UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; _cellBack = [[UIView alloc] initWithFrame:CGRectMake(0, cell.frame.origin.y, cell.frame.size.width, cell.frame.size.height)]; _cellBack.backgroundColor = [UIColor whiteColor]; [self.tableView insertSubview:_cellBack belowSubview:cell]; for (int i = 0; i < [self.tableView subviews].count; i++) { UIView *v = [[self.tableView subviews] objectAtIndex:i]; if ([v isEqual:_cellBack]) { NSLog(@"cellBack %d", i); } if ([v isEqual:cell]) { NSLog(@"cell %d", i); } } 。当刷一个单元格时,我希望在该单元格下方可以看到(显示)一个视图。这是我的代码:

for

_cellBack循环中,我检查视图的索引是否符合我的预期,实际上它们是; cell的索引比insertSubview:belowSubview:索引少一个。

当我用insertSubview:aboveSubview:替换UIView来电时,它可以正常工作(虽然白色_cellBack显示在刷过的单元格上方),所以这不是不分配{ {1}}正确。我也尝试了insertSubview:atIndex:,但这也没有用。

导致这种情况的原因是什么?

谢谢!

3 个答案:

答案 0 :(得分:2)

使SideSwipeTableView示例适用于ios7&amp;之前,只需将行更改为

[cell.superview insertSubview:self.sideSwipeView belowSubview:cell];

其他任何东西推动单元格顶部的后视图,你没有得到任何动画效果,动画发生在你的背景单元格后面!要检查此项,请将单元格的偏移量更改为小于全屏,以检查您的单元格是否仍位于顶部,而背景单元格实际位于下方。从:

cell.frame = CGRectMake(direction == UISwipeGestureRecognizerDirectionRight ? cellFrame.size.width : -cellFrame.size.width, cellFrame.origin.y, cellFrame.size.width, cellFrame.size.height);  

cell.frame = CGRectMake(direction == UISwipeGestureRecognizerDirectionRight ? cellFrame.size.width/2 : -cellFrame.size.width/2, cellFrame.origin.y, cellFrame.size.width, cellFrame.size.height);

答案 1 :(得分:1)

UITableView已经能够将事物置于细胞之后。它是单元格的backgroundView。为什么不尝试这样做,所以你会做以下事情:

cell.selectedBackgroundView = _cellBack;

答案 2 :(得分:0)

事实证明,如果我将它添加到另一个视图,代码将按预期工作。

这是我添加它的地方:

    _cellBack = [[UIView alloc] initWithFrame:CGRectMake(0, cell.contentView.frame.origin.y, cell.frame.size.width, cell.frame.size.height)];
    _cellBack.backgroundColor = [UIColor whiteColor];

    [cell insertSubview:_cellBack belowSubview:cell.contentView];

我仍然不确定为什么问题中的代码不起作用。来自this github accountSideSwipeTableView代码与我之前的代码类似,但效果很好。