如何在iOS中的导航栏标题中添加下拉菜单

时间:2015-07-24 18:53:54

标签: ios objective-c swift storyboard

我想在这些屏幕截图中创建类似于下拉菜单的内容。我该怎么做呢?

enter image description here

点按标题后,箭头指向上方,菜单会下降。应用程序是大学菜单。

enter image description here

2 个答案:

答案 0 :(得分:17)

在您的应用中有很多cocoacontrol可以执行此功能:

DropDown Menu Controls For iOS

但我认为lmdropdownview是最准确的。

我的错误,btnavigationdropdownmenu它对你所要求的最准确(根据你的屏幕)。

实施(Swift)[有关更多特定说明和自定义,请参阅自述文件]:

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]
}

希望它有所帮助。

编辑:

感谢' rsc'对于这个信息,这个cocoacontrol的objective-c version

    #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;

    }

答案 1 :(得分:6)

如果您喜欢手动执行此操作,可能需要解决方法:

创建两个UIButton(向上/向下),将第一个分配给navigationItem.titleView,在此操作检查中为UIControlEventTouchUpInside添加操作,检查状态是否更改为展开或折叠并依赖于此在UITableView UIViewController的顶部添加/删除view空数据源,设置正确的框架。然后更新数据源并使用行动画UITableViewRowAnimationBottomUITableViewRowAnimationTop重新加载,具体取决于它是否正在展开或折叠。用第二个替换按钮。

相关问题