Как добавить выпадающее меню в заголовок панели навигации в iOS

Я хочу сделать что-то похожее на выпадающее меню на этих снимках экрана. Как мне это сделать?

введите описание изображения здесь

Когда вы нажимаете заголовок, стрелка указывает вверх, а меню падает. Приложение - это меню колледжа.

введите описание изображения здесь

Ответ 1

Для выполнения этой функции в вашем приложении есть много коко-контролеров:

Элементы управления DropDown для iOS

Но я думаю, что lmdropdownview является самым точным.

Моя ошибка, btnavigationdropdownmenu ЕГО наиболее точная для того, что вы просите (согласно вашим экранам).

Реализация (Swift) [См. readme для более подробных инструкций и настроек]:

let items = ["Most Popular", "Latest", "Trending", "Nearest", "Top Picks"]

let menuView = BTNavigationDropdownMenu(frame:  CGRectMake(0.0, 0.0, 300, 44), title: items.first!, items: items, containerView: self.view)

self.navigationItem.titleView = menuView

menuView.didSelectItemAtIndexHandler = {(indexPath: Int) -> () in
            println("Did select item at index: \(indexPath)")
            self.selectedCellLabel.text = items[indexPath]
}

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

EDIT:

Спасибо за 'rsc' за информацию, theres objective-c версия этого cocoacontrol:

    #import "PFNavigationDropdownMenu.h"


-(void)viewDidLoad{
    PFNavigationDropdownMenu *menuView = [[PFNavigationDropdownMenu alloc]initWithFrame:CGRectMake(0, 0, 300, 44)title:items.firstObjects items:items containerView:self.view];

    menuView.didSelectItemAtIndexHandler = ^(NSUInteger indexPath){
            NSLog(@"Did select item at index: %ld", indexPath);
            self.selectedCellLabel.text = items[indexPath];
        };

        self.navigationItem.titleView = menuView;

    }

Ответ 2

Возможное обходное решение, если вы предпочитаете делать это вручную:

Создайте два UIButton (вверх/вниз), назначьте первый для navigationItem.titleView, добавьте действие для UIControlEventTouchUpInside в эту проверку действий, если состояния меняются на разложение или сбрасывание и зависят от этого добавления/удаления UITableView с пустым источником данных в верхней части вашего UIViewController view, установите правильный кадр. Затем обновите источник данных и перезагрузите анимацию строки UITableViewRowAnimationBottom или UITableViewRowAnimationTop в зависимости от того, будет ли она расширяться или сворачиваться. Замените кнопку вторым.