これらのスクリーンショットのドロップダウンメニューに似たものを作りたいと思います。どうすればそれを行うことができますか?
タイトルをタップすると、矢印が上を向き、メニューが下に下がります。アプリは大学のメニューです。
アプリでこの機能を実行するためのcocoacontrolsはたくさんあります。
しかし、私は lmdropdownview が最も正確だと思います。
私の間違い、 btnavigationdropdownmen それはあなたが求めているものに対して最も正確です(あなたの画面によると)。
実装(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]
}
それが役に立てば幸い。
編集:
情報を提供してくれた「rsc」に感謝します。このcocoacontrolの objective-cバージョン があります。
#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
(上/下)を作成し、最初の1つをnavigationItem.titleView
に割り当て、このアクションでUIControlEventTouchUpInside
のアクションを追加し、状態が拡張または折りたたみに変更され、その追加/削除UITableView
に依存して空のdataSourceが上にあるかどうかを確認しますUIViewController
view
、適切なフレームを設定します。次に、データソースを更新し、行アニメーションUITableViewRowAnimationBottom
またはUITableViewRowAnimationTop
でリロードします。これは、データソースが展開されているか折りたたまれているかに応じて異なります。ボタンを2番目のものと交換します。