我有一个带有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的问题。我也尝试过insertSubview:atIndex:,但这也不起作用。

是什么原因造成的?

谢谢!

最佳答案

要使SideSwipeTableView示例在ios7及更高版本上运行,只需将行更改为

[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);

关于iphone - UITableViews中的insertSubview:belowSubview:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9459672/

10-14 20:48