2010-03-08 5 views
2

Si j'ai un UITableView en mode édition, w/réorganisation activée, il semble que je ne peux pas déplacer certaines cellules (mais pas toutes) dans certains (mais pas tous) des sections vides. Par exemple, si j'ai cette disposition:Impossible de réorganiser un UITableViewCell en _some_ sections vides d'un UITableView

Section 1 
    apple 
    banana 
Section 2 
    doberman 
Section 3 
Section 4 

Ensuite, je peux déplacer « doberman » dans une fente dans l'article 1 (sauf après « banane »), mais je ne peux pas le déplacer dans la section 3 ou 4 à tout.

D'autre part, je peux déplacer 'pomme' & 'banane' dans la section de l'article 2 (sauf après 'doberman'), et je peux me déplacer dans l'article 3, mais pas dans la section 4.

Ce qui donne? Cela ressemble à un comportement buggé. Comment les gens travaillent-ils autour d'elle? Est-ce que Apple est au courant de ce bug?

+0

La méthode targetIndexPathForMoveFromRowAtIndexPath se déclenche-t-elle lorsque vous tentez de déplacer la cellule vers ces sections? – DyingCactus

+0

@DyingCactus: ce n'est pas le cas. –

Répondre

2

Ouais, c'est un bug de la pomme. J'ai parlé à Apple, utilisé l'un de mes "tickets de support" pour qu'ils me disent que c'est leur mauvais. J'ai aussi bidouillé autour de lui, en passant d'un modèle de table de section évident à un modèle qui n'a qu'une seule section, et modélise les "en-têtes de section" comme des cellules de vue de table stylisées.

pomme stupide ...

2

Je l'ai utilisé une autre astuce: créer une dernière section fictive avec une cellule vide (backgroundView invisible) dans le mode d'édition. Avec ceci, je peux garder l'organisation de section/rangée, et la réorganisation fonctionne merveilleusement, même avec la section «dernière».

Une autre façon est d'avoir un pied de section ayant au moins la même hauteur que vos cellules. Dans ce cas, la cellule peut dépasser la dernière cellule de la dernière section.

0

Sirdek est correct. Copiez simplement le code suivant dans votre UITableViewDelegate/UITableViewDataSource.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
    NSInteger lastSection = [self numberOfSectionsInTableView:tableView] - 1; 
    NSInteger lastRow = [self tableView:tableView numberOfRowsInSection:lastSection] - 1; 
    CGFloat height = [self tableView:tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow inSection:lastSection]]; 

    return (section == lastSection ? [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, height)] autorelease] : nil); 
} 


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
{ 
    NSInteger lastSection = [self numberOfSectionsInTableView:tableView] - 1; 
    NSInteger lastRow = [self tableView:tableView numberOfRowsInSection:lastSection] - 1; 
    CGFloat height = [self tableView:tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow inSection:lastSection]]; 

    return (section == lastSection ? height : 0); 
} 
+0

Est-ce que l'ajout d'un pied de section à la dernière section résout aussi le problème de ne pas pouvoir cibler la dernière rangée dans les autres sections? – Matthew

Questions connexes