Как отобразить панель поиска в NSMenuItem

Я создаю приложение MenuBar Swift Cocoa, которое отображает список пользовательских репозиториев github. После нажатия на один из них открывается новое окно браузера с репозиторием на github.com.

Я успешно загружаю список репозиториев и отображаю их в объектах NSMenuItem. Теперь я пытаюсь добавить панель поиска вверху списка и повторно отображать элементы в соответствии с поисковой фразой.

Мои вопросы:

  1. Как лучше всего отображать «панель поиска» в NSMenu?
  2. Есть ли стандартный способ «поиска/фильтрации» NSMenuItem?
  3. Должен ли я повторно отображать все меню (вызывая .removeAllItems()) и динамически добавлять новые элементы? Или у меня должно быть два статических меню? Я спрашиваю об этом, потому что макет (например, NSMenuItems) будет отличаться, когда пользователь ищет, а когда нет.

Я использую Swift 3 и Xcode 8.3. Спасибо!


person Jerguš Lejko    schedule 01.05.2017    source источник
comment
Для фильтрации меню нет ничего особенного. Поэтому я бы просто попробовал удалитьAllItems и добавить их по мере необходимости.   -  person catlan    schedule 03.05.2017
comment
спасибо @catlan, я так и сделаю!   -  person Jerguš Lejko    schedule 03.05.2017


Ответы (1)


Ну, после нескольких месяцев попыток я понял это.

  1. Как лучше всего отобразить «панель поиска» в NSMenu?

    Вы можете добавить NSMenuItem к NSMenu и установить для него вид CustomView (searchItem.view = searchView, соедините searchItem и searchView, перетащив его из раскадровки в контроллер).

  2. Есть ли стандартный способ "поиска/фильтрации" NSMenuItems?

    Нет, нет. Очистите элементы и повторите рендеринг.

  3. Должен ли я повторно отображать все меню (вызывая .removeAllItems()) и динамически добавлять новые элементы? Или у меня должно быть два статических меню? Я спрашиваю об этом, потому что макет (например, NSMenuItems) будет отличаться, когда пользователь выполняет поиск, а когда нет.

    Наличие двух подменю оказалось хорошим решением.

person Jerguš Lejko    schedule 20.10.2017