我有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:
,但这也没有用。
导致这种情况的原因是什么?
谢谢!
答案 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 account的SideSwipeTableView
代码与我之前的代码类似,但效果很好。