I have a UITableView  with UITableViewCell  s that are swipable. When a cell is swiped, I want a view to be visible (revealed) underneath that cell. Here's the code that I have: 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);     } }   In the for  loop, I check to see if the views' indexes are as I expect, and indeed they are; _cellBack  has an index that is one less than cell  's index.   When I replace the insertSubview:belowSubview:  call wit...