Comment ajouter un séparateur personnalisé de UITableViewCell?

S'il vous plaît pardonnez quelque temps comme c'est une longue explication

J'ai un UIViewController qui se compose d'une UIButton et un UITableView qui charge différents types de UITableViewCells avec Identifiant Cell1 et Cell2, sur événement touchUpInside du bouton. Je m à l'aide de storyboard.

Le séparateur pour les deux cellules sont personnalisés.

Cell1 a un séparateur qui occupe toute la largeur de la cellule et de 1 pixel de hauteur au fond de la cellule.

Alors que Cell2 a un séparateur, qui a décalage de 5 pixels de la cellule de gauche et de droite.

Chaque fois que le bouton à l'extérieur de la tableView est cliqué sur le tableViewCells sont échangés, basé sur la cellule d'identification.

D'abord le tableView occupe toute la largeur de viewController et se compose de Cell1, mais le bouton est actionné , tableViewCells sont modifiées pour Cellule2 et le cadre de l' tableView est Changé, La largeur est réduite de 10 et x-origine est augmenté de 5.

Mais lorsque cela se produit, le séparateur de Cell2 est de 5 pixels de distance de la cellule sur la droite mais à gauche, il s'est éloigné de 5 pixels.
Cela se produit pour tous Cell2 qui est chargé avec des données, et les cellules qui n'a pas de données, le cadre est modifié en conséquence.

Mais la cellule après qui a la largeur de Cell1 (grande largeur)

-(void)setSeperatorStyleForTableView :(UITableViewCell *)cell //this is called in cellForRowAtIndex 
{
   //cell- type of cell(Cell1 or Cell2)

     CGRect seperatorFrame;
    UIImageView *seperatorImage;

    seperatorFrame = [self setSeperatorFrame:cell];

    if(firstCellToBeLoaded)//BOOL used to change the button text and load appropriate cells
    {
        seperatorImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"table_row         
                                                                            2.png"]];
    }
    else
    {

        seperatorImage = [[UIImageView alloc] initWithImage:[UIImage   
                                                  imageNamed:@"table_row.png"]];
    }
    seperatorImage.frame = seperatorFrame;
    seperatorImage.autoresizingMask = YES;
    [cell.contentView addSubview:seperatorImage];

}

//set the customized separator frame

-(CGRect)setSeperatorFrame :(UITableViewCell *)cell
{

    CGRect seperatorFrame;
    seperatorFrame.size.height = 1.0;
    seperatorFrame.origin.y = cell.frame.origin.y + (cell.frame.size.height - 1.0);

    if(firstCellToBeLoaded)
    {
        seperatorFrame.origin.x = cell.frame.origin.x ;
        seperatorFrame.size.width = cell.frame.size.width;
    }
    else
    {
        seperatorFrame.origin.x = cell.frame.origin.x + 5.0;
        seperatorFrame.size.width = cell.frame.size.width -10.0;

    }

    return seperatorFrame;
}

OriginalL'auteur user1899840 | 2013-02-08