Adicionando várias células personalizadas no UITableView

Embora esta seja uma das perguntas mais frequentes, mas não consegui encontrar uma resposta abrangente. Eu preciso ter células personalizadas no UITableView. Alguns contendo rótulos ou campos de texto e outros com imagens e botões. Eu criei classes separadas para cada tipo de célula. Estou usando a tabela GroupStyle com várias seções. No momento, estou adicionando células no cellForIndexPath com case-switch para seção e if-else para linhas na seção:

id cell;
switch(indexPath.section) {
    case 0:
           if(indexPath.row==0) {
               CellA *cell = [[[CellA alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Celld%",indexPath.row]] autorelease];
               //configure cell
               return cell;
           }
           else if(indexPath.row==1) {
               CellB *cell = [[[CellB alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Celld%",indexPath.row]] autorelease];
               //configure cell
               return cell;
           }
           break;
    case 1:
           if(indexPath.row==0) {
               CellC *cell = [[[CellC alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Celld%",indexPath.row]] autorelease];
               //configure cell
               return cell;
           }
           break;
    default:
            break;
}
return cell;

Tenho que retornar a célula no final também porque, devido à definição de células dentro dos blocos de código, a célula se torna irreconhecível. Para resolvê-lo, declarei célula com id no topo. Mas eu sei que este não é o caminho certo. Como posso resolver esse problema de declaração e acesso de vários tipos de células?

Existem 4-5 linhas no momento que cabem em uma tela e não precisam ser roladas. Então, não estou reutilizando células. Mas mais linhas serão pressionadas durante a edição. E em outra tabela, há mais linhas que podem rolar a tela. Isso significa que devo reutilizar células. Então, a segunda parte da minha pergunta é; como posso reutilizar várias células personalizadas?

questionAnswers(2)

yourAnswerToTheQuestion