2010-07-22 6 views
0

Je me demandais si quelqu'un l'avait déjà essayé. J'ai besoin d'afficher une info-bulle dans une vue de tableau lorsque l'utilisateur sélectionne un mot dans le texte de la ligne.Affichage d'info-bulles dans une vue de table iphone

Quelles sont les complexités impliquées? Quelle est la meilleure façon de faire cela?

Merci d'avance!

Répondre

1

Vous pouvez concevoir une nouvelle vue qui affiche cette info-bulle. Vous pouvez ensuite ajouter la nouvelle vue aux sous-vues tableviewcontrollers. Cela pourrait être fait dans le didSelectRowAtIndexPath ou quelque chose comme ça. vous donnez l'information appropriée à la nouvelle nouvelle vue et l'ajoutez en tant que subview. en fonction des données que vous souhaitez transmettre à la vue, il peut être utile d'écrire un propre viewcontroller à cette fin.

vous devez fournir un moyen de fermer l'info-bulle. Et bien sûr, vous devez fournir un moyen de sélectionner la ligne "de la manière prévue" (si nessesairy) peut-être alors un doubletap. Je ne suis pas sûr s'il y a allready une façon de cela avec le cadre, mais je suppose que vous devriez écrire votre propre tableviewcontroller-sous-classe ...

Espoir qui a aidé

EDIT:

Hey Mansi, je ne l'ai pas testé, mais du haut de ma tête je dirais que ça devrait marcher comme ceci: Vous créez votre propre sous-classe UITableView. UITableView hérite de UIResponder, vous pouvez donc implémenter la méthode "touchesBegan:" dans votre sous-classe tableview. Dans cette méthode vous instanciez votre tooltip-view-subclass, l'ajoutez comme sous-vue de la tableview et définissez sa position aux coordonnées du touch, vous pouvez définir la position horizontale à une valeur fixe ou séparée, pour éviter que l'info-bulle montrant hors écran.


#import 
#import 

@interface myTableView : UITableView { 
    MyToolTip *tooltip; 
} 

@end 

#import "myTableView.h" 

@implementation myTableView 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    tooltip = [[MyToolTip alloc] init]; 

    CGPoint location = [[touches anyObject] locationInView:self]; 
    location.x = ([[UIScreen mainScreen] bounds].size.width/2) - (tooltip.bounds.size.width/2); 

    tooltip.bounds.origin = location; 
    [self addSubview:tooltip]; 
    [NSTimer timerWithTimeInterval:3.0 target:self selector:@selector(removeTooltip) userInfo:nil repeats:NO]; 
} 

- (void)removeTooltip { 
    [tooltip removeFromSuperview]; 
} 


@end 
+0

Merci Tobi. Mais, ce que j'essaie de comprendre, c'est comment calculez-vous où dans la vue de la table pour afficher l'info-bulle. Il doit être affiché au-dessus d'un mot spécifique dans la phrase. Existe-t-il un moyen de calculer les coordonnées d'un mot spécifique dans la phrase? J'espère avoir été en mesure d'expliquer mon problème ... – Mansi

+0

Je ne sais pas si vous pouvez obtenir les coordonnées d'une cellule de la structure. mais comme expliqué ci-dessus, puisque l'utilisateur appuie sur la rangée pour laquelle l'info-bulle doit être affichée, je pense que les coordonnées tactiles feront l'affaire. Si vous voulez être indépendant des coeurs tactiles, j'ai peur de devoir "mesurer" la hauteur de la cellule et calculer sa position verticale avec le numéro de ligne. – Tobi

+0

oh peut-être que je me suis trompé encore, parlez-vous de positions spécifiques à l'intérieur d'une seule cellule? – Tobi

Questions connexes