Автозаполнение NSTokenField - PullRequest
0 голосов
/ 16 января 2010

Я создаю приложение, которое использует NSTokenField. Мне нужно автозаполнение. Я использую NSURLRequest для запроса данных от http://stackoverflow.com/filter/tags?_=<timestamp>&limit=6&q=<str_to_autocomplete>&timestamp=<timestamp>

Где <timestamp> - текущая временная метка, <str_to_autocomplete> - строка для автозаполнения. Так, например, http://stackoverflow.com/filter/tags?_=1263657227137&q=lol&limit=6&timestamp=1263657227137

Ответ в следующем формате:

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

(Число - это количество раз, которое этот тег используется).

Мне нужно предоставить пользователю список под NSTokenField с этим списком тегов, и пользователь может либо выбрать один из списка, либо продолжить ввод.

Кто-нибудь может мне помочь? Спасибо.

Редактировать: сейчас я смотрю на Mac Dev Center. Должен ли я использовать этот метод: tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:?

1 Ответ

5 голосов
/ 21 января 2010

Это будет отправлено делегату для запроса массива строк:

tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem: 

Эти строки должны затем обрабатываться tokenField в representedObject (или нет, если вам нужны только строки).

Пример в вашем 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;
}

tokenField будет отображать завершенные строки в меню при вводе. Все подробности в док.

...