2010-01-16 4 views
0

Je crée une application qui utilise un NSTokenField. J'ai besoin de l'auto-complétion. J'utilise un NSURLRequest pour demander des données de http://stackoverflow.com/filter/tags?_=<timestamp>&limit=6&q=<str_to_autocomplete>&timestamp=<timestamp>NSTokenField autocomplete

<timestamp> est l'horodatage actuel, un est la chaîne à saisie semi-automatique. Ainsi, par exemple http://stackoverflow.com/filter/tags?_=1263657227137&q=lol&limit=6&timestamp=1263657227137

La réponse est dans ce format:

javascript|23179 
jquery|16936 
sql-server|11768 
ruby-on-rails|8669 
best-practices|7037 
ruby|6722 

(Le nombre est le nombre de fois cette balise est utilisée).

Je dois donner à l'utilisateur une liste sous le NSTokenField avec cette liste de balises, et l'utilisateur peut soit sélectionner une de la liste, soit continuer à taper.

Quelqu'un peut-il m'aider? Merci.

Modifier: Je regarde Mac Dev Center maintenant. Dois-je utiliser cette méthode: tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:?

+0

Je suis un peu confus quant à ce que vous demandez. Voulez-vous afficher la liste des tags dans le champ token à des fins de sélection ou disposez-vous d'un contrôle supplémentaire pour les tags et, lorsqu'ils sont sélectionnés, ils apparaissent dans le champ token? – sbooth

+0

Un contrôle supplémentaire en dessous. –

Répondre

5

Ce seront envoyés au délégué pour interroger un tableau de chaînes:

tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem: 

Ces chaînes doivent alors être traitées par le tokenField dans representedObject (ou pas si vous avez besoin que des chaînes).

Exemple dans votre délégué tokenField:

- (NSArray *)tokenField:(NSTokenField *)tokenField completionsForSubstring:(NSString *)substring indexOfToken:(NSInteger)tokenIndex indexOfSelectedItem:(NSInteger *)selectedIndex 
{ 
    //code to find the tags strings corresponding to substring (the string typed in the token) 
    //then put them in an array (returnArray) 
    return returnArray; 
} 

Le tokenField présentera les chaînes réalisées dans un menu que vous tapez. Tous les détails sont dans le document.