Iphone insertSubview:belowSubview:在UITableView中

Iphone insertSubview:belowSubview:在UITableView中,iphone,objective-c,ios,uitableview,uiview,Iphone,Objective C,Ios,Uitableview,Uiview,我有一个可切换的UITableView和UITableView单元格。当滑动单元格时,我希望该单元格下方的视图可见(显示)。以下是我的代码: UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; _cellBack = [[UIView alloc] initWithFrame:CGRectMake(0, cell.frame.origin.y, cell.frame.size.width, cell

我有一个可切换的
UITableView
UITableView单元格。当滑动单元格时,我希望该单元格下方的视图可见(显示)。以下是我的代码:

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);
    }
}
UITableViewCell*cell=[self.tableView cellforrowatinexpath:indexath];
_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在subview:cell下面];
对于(int i=0;i<[self.tableView子视图].count;i++){
UIView*v=[[self.tableView子视图]objectAtIndex:i];
if([v等质量:_cellBack]){
NSLog(@“cellBack%d”,i);
}
if([v相等:单元格]){
NSLog(@“单元%d”,i);
}
}
for
循环中,我检查视图的索引是否如我所期望的那样,而且确实如此<代码>\u cellBack
的索引比
单元格的索引小一个

当我将
insertSubview:belowSubview:
调用替换为
insertSubview:belowSubview:
,它可以正常工作(尽管白色的
UIView
显示在刷卡的单元格上方),所以这不是不正确分配
\u cellBack
的问题。我还尝试了
insertSubview:atIndex:
,但也没有成功

这可能是什么原因造成的


谢谢

UITableView
已经具备了将东西放在单元格后面的能力。这是单元格的背景视图。你为什么不试一下,这样你就可以做以下事情:

cell.selectedBackgroundView = _cellBack;

UITableView
已经具备了将东西放在单元格后面的能力。这是单元格的背景视图。你为什么不试一下,这样你就可以做以下事情:

cell.selectedBackgroundView = _cellBack;

因此,如果我将其添加到另一个视图中,代码将按预期工作

这里是我添加它的地方:

    _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];

我仍然不确定问题中的代码为什么不起作用。来自的
SideSwipeTableView
的代码与我之前的代码类似,并且工作正常。

因此,如果我将其添加到另一个视图中,代码将按预期工作

这里是我添加它的地方:

    _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];

我仍然不确定问题中的代码为什么不起作用。来自的
SideSwipeTableView
的代码与我之前的代码类似,并且工作正常。

要使SideSwipeTableView示例在ios7和previous上工作,只需将行更改为

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


要使SideSwipeTableView示例在ios7&previous上工作,只需将行更改为

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


您是否尝试A)在指定单元格下方(例如下方)插入新视图,以便新视图和表格单元格一层接一层;或者您正在尝试B)为表插入新行,以便在代码运行后,如果表的开头有三个单元格,那么它将有四个?我正在尝试将其添加到单元格下面。我添加的不是新行。可能是您成功添加了子视图,但由于它与表格单元格大小和位置相同,您无法看到它,因为表格单元格位于其顶部并完全隐藏它?您是否尝试a)将新视图插入指定单元格的下方(例如下方),这样,您的新视图和表格单元格就可以一个一个地分层;或者您正在尝试B)为表插入新行,以便在代码运行后,如果表的开头有三个单元格,那么它将有四个?我正在尝试将其添加到单元格下面。但我添加的不是新行。那么,可能是您成功添加了子视图,但由于它与表格单元格大小相同,位置相同,所以您无法看到它,因为表格单元格位于其顶部,并且完全隐藏了它?