答案 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
空数据源,设置正确的框架。然后更新数据源并使用行动画UITableViewRowAnimationBottom
或UITableViewRowAnimationTop
重新加载,具体取决于它是否正在展开或折叠。用第二个替换按钮。