Mail.app как NSTokenField для имен и писем - PullRequest
2 голосов
/ 18 января 2010

Я хочу создать NSTokenField, который работает так же, как поле получателя в Mail.app. Я знаю, как искать в адресной книге имена и электронные письма. Наверное, это действительно плохие вопросы, извините за это.

  1. Как я могу переформатировать массив результатов поиска, чтобы получить элементы в формате "Имя " (например, результаты автоматического завершения в Mail.app)

  2. Как работает метод завершения NSTokenField? Я не могу найти пример кода, который работает для меня. Вы можете объяснить это или дать мне код?

1 Ответ

4 голосов
/ 19 января 2010

Прошло много времени с тех пор, как я использовал NSTokenField, но вот оно:

Ad. 2. у вас есть метод делегата NSTokenField с именем tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:, который должен возвращать массив возможных соревнований предоставленной подстроки. Это работает так, что вы устанавливаете свой класс в качестве делегата вашего NSTokenField и переопределяете этот метод, и в нем вы ищите в своей базе данных записи, которые соответствуют предоставленной подстроке, и возвращаете массив возможных совпадений. Какао должно сделать все остальное.

Ad. 1. еще раз NSTokenField делегат может иметь метод с именем tokenField:displayStringForRepresentedObject:, который позволяет отображать некоторый объект (например, адрес электронной почты) в любом формате, который вы хотите (чтобы объект был просто электронной почтой, и вы могли бы вернуть строку в формате " Имя "из этого метода, найдя имя для этого конкретного электронного письма в вашей базе данных).

Надеюсь, это поможет!

...