2008-10-24 16 views
57

Dans les applications iPhone d'Apple (comme les contacts), une icône en forme de loupe apparaît en haut de l'index de la vue de la table. Comme l'API de l'index de vue de table est basée sur des caractères, je suppose que cette loupe est un caractère Unicode. Jusqu'à présent, j'ai décidé d'y placer un point d'interrogation, mais cela semble boiteux. Est-ce que quelqu'un peut me dire quel est le caractère de la loupe?Qu'est-ce que le loupe d'index UITableView?

+0

Je ne suis pas sûr que je ne vais pas faire une réponse, mais vous êtes presque certainement pas de chance. Je me base principalement sur le fait que les deux applications facebook et linkedin manquent cette fonctionnalité. Si c'est le cas, je m'attendrais à trouver le travail dans ceux-ci. – carson

+0

Merci. Je suis allé de l'avant et a déposé un rapport de bogue. –

Répondre

113

Renvoyer UITableViewIndexSearch comme titre d'index de section (identique à @ "{search}") fonctionne également.

+2

juste pour ajouter, les docs noter que c'est disponible dans iPhone OS 3.0b et plus tard. – hkatz

+0

C'est probablement l'approche recommandée. @ "{search}" ne semble pas être documenté nulle part. –

+9

C'est en fait la bonne réponse en ce qui me concerne. Vous devriez éviter d'utiliser des constantes magiques dans votre code – arclight

2

Vous pouvez certainement mettre un caractère Unicode dans l'index de la vue tabulaire (je l'ai fait avec d'autres caractères) et mettre votre en-tête dans la première section de table au lieu de tableViewHeader. Cela dit, je n'ai pas encore trouvé la loupe dans l'une des références Unicode. Les fermetures que j'ai trouvées sont le symbole de l'enregistreur téléphonique - ⌕ (\ u2315). Malheureusement, il pointe dans la mauvaise direction et la "poignée" s'étend dans la "loupe".

+0

Ouais - J'ai été à travers les personnages et je ne l'ai pas vu. Mon autre pensée est que c'est dans l'un des jeux de polices qui vit sur l'iPhone et non pas sur OS X. Enfin, ce n'est peut-être pas un personnage du tout; juste une icône privée Apple échangent en interne. –

+0

J'ai attrapé une copie de Friend Book pendant la courte période où il était sur l'App Store et il y avait une loupe en haut de l'index, c'est pourquoi j'ai supposé que c'était un personnage Unicode. Mais, comme tu l'as dit, je ne l'ai pas encore trouvé parmi les personnages que j'ai vus. – Jablair

94

@"{search}" FTW.

Renvoyez ce titre et il est magiquement remplacé par le glyphe correct.

+2

Des conneries, c'est tout! Merci! –

+0

Je le cherchais depuis longtemps et finalement je l'ai eu dans le forum de 2 ans ... merci. –

+33

Envisagez d'utiliser la constante 'UITableViewIndexSearch', comme le signale l'utilisateur123417. –

0

Je peux comprendre pourquoi quelqu'un ne veut pas utiliser l'image, même si c'est très joli ... les caractères sont tellement plus faciles à maintenir et peuvent évoluer avec peu d'effort.

⚦ est une autre option unicode pour un glyphe grossissant comme une lentille ... encore une fois il ne fait pas face à la direction correcte .. Je crois que c'est vraiment une sorte de symbole de genre hermaphrodite. Le code HTML pour le symbole Unicode ci-dessus est & # 9894;

Je pense vraiment qu'un symbole de loupe doit être ajouté au jeu de caractères Unicode sous "26: Symboles divers".

43

En tableView: sectionForSectionIndexTitle: atIndex: faire défiler explicitement vers le haut et le retour NSNotFound:

- (NSInteger) tableView:(UITableView *)tableView 
sectionForSectionIndexTitle:(NSString *)title 
       atIndex:(NSInteger)index { 
    if (index == 0) { 
     [tableView setContentOffset:CGPointZero animated:NO]; 
     return NSNotFound; 
    } 
    return index; 
} 
+1

Une autre option est [self.tableView scrollToRowAtIndexPath: [NSIndexPath indexPathForRow: 0 dansSection: 0] atScrollPosition: UITableViewScrollPositionBottom animé: NO]; –

+0

Merci, cette réponse a été très utile. – titaniumdecoy

+0

Merci @Marcello Bastea-Forte. – milanpanchal

1

En le sectionIndexTitlesForTableView ajoute un NSMutableArray * titres par exemple et en plus de vos index ajouter le [titres addObject: UITableViewIndexSearch]

5

Il existe déjà un codet UTF existant pour la loupe. C'est U+1F50D. Cependant, il est un peu difficile d'obtenir Xcode pour reconnaître ce numéro. Selon le Guide de programmation de chaînes d'Apple, les bits UTF doivent être divisés en deux paires de substitution UTF-16 (0xD83D, 0xDD0D). Vérifiez avec this surrogate pair calculator pour référence.

Une instance NSString avec le contenu de la paire de substitution peut être obtenue avec:

[NSString stringWithFormat:@"%C%C", 0xD83D, 0xDD0D]; 
+1

Non. Non. Utilisez UITableViewIndexSearch comme indiqué dans plusieurs réponses (plus anciennes). Cela fait partie du SDK, donc votre application restera compatible entre les versions iOS. – JOM

+2

La question posée était quel était le caractère de la loupe et cette technique pour travailler avec les codes UTF les plus mystérieux semblait digne d'être mentionnée. iOS a une énorme bibliothèque de glyphes que les gens n'utilisent jamais et de temps en temps, c'est bien d'y avoir accès parce qu'ils évoluent très bien. – weibel

+0

@ "" fonctionne pour moi. – Pang

0

Je sais que c'est un ancien poste, mais puisqu'il est lié à ce que la même façon que je cherchais ... Si quelqu'un est la recherche du caractère Unicode de la loupe, il serait celui \ u128269 représenté par ceci: