1、在 AppDelegate.m 中包装导航控制器
导入头文件
#import "ViewController.h"
在 didFinishLaunchingWithOptions 方法中更改主窗口
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] init]];
return YES;
}
2、 在 ViewController.m 中
定义宏
// 整个屏幕的宽
#define WIDTH self.view.frame.size.width
// 整个屏幕的高
#define HEIGHT self.view.frame.size.height
设置表格的协议
<UITableViewDelegate, UITableViewDataSource>
// 定义属性
@property (nonatomic ,strong) UITableView *addMenuTableView; // + 号下拉表格
@property (nonatomic ,strong) UIButton *addBtn; // + 按钮
在 viewDidLoad 中设置
- (void)viewDidLoad {
[super viewDidLoad];
// 视图的背景颜色
self.view.backgroundColor = [UIColor whiteColor];
// 导航条控件颜色
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
// 创建按钮添加到右侧导航条
_addBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
_addBtn.frame = CGRectMake(self.view.frame.size.width - 50, 5, 30, 30);
[_addBtn setTitle:@"+" forState:UIControlStateNormal];
[_addBtn addTarget:self action:@selector(didClickRightNavAddBtn:) forControlEvents:UIControlEventTouchUpInside];
_addBtn.titleLabel.font = [UIFont systemFontOfSize:30];
// 将按钮添加到导航条
[self.navigationController.navigationBar addSubview:_addBtn];
// 创建 下拉小表格
_addMenuTableView = [[UITableView alloc] initWithFrame:CGRectMake(WIDTH - 10, 68, 0.1, 0.1) style:UITableViewStylePlain];
_addMenuTableView.delegate = self;
_addMenuTableView.dataSource = self;
_addMenuTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_addMenuTableView.rowHeight = 50;
[_addMenuTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"menuTableViewcell"];
[self.view addSubview:_addMenuTableView];
}
右侧导航条按钮的点击事件
// 右侧导航条按钮的点击事件
-(void)didClickRightNavAddBtn:(UIButton *)sender
{
//判断 如果是选中状态
if (sender.selected == YES) {
// 点击则变成不选中状态
sender.selected = NO;
// 不显示状态时表格不显示
[UIView animateWithDuration:0.5 animations:^{
_addMenuTableView.frame = CGRectMake(WIDTH - 30, 68, 0.1, 0.1);
}];
}else if (sender.selected == NO){ // 如果是不选中状态
// 点击则变成选中状态
sender.selected = YES;
// 选中状态表格显示
[UIView animateWithDuration:0.5 animations:^{
_addMenuTableView.frame = CGRectMake(WIDTH - 160, 68, 150, 100);
[_addMenuTableView reloadData];
}];
}
}
数据源方法
#pragma mark TableView DataSource
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 2;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"menuTableViewcell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"menuTableViewcell"];
}
NSArray *imgArr = @[@"shangchuanVideo",@"musicFu"];
NSArray *titArr = @[@"上传视频",@"上传音频"];
cell.imageView.image = [UIImage imageNamed:imgArr[indexPath.row]];
cell.textLabel.text = titArr[indexPath.row];
cell.textLabel.textColor = [UIColor whiteColor];
cell.backgroundColor = [UIColor redColor];
return cell;
}
点击屏幕空白处隐藏表格
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 点击则变成不选中状态
_addBtn.selected = NO;
// 不显示状态时表格不显示
[UIView animateWithDuration:0.5 animations:^{
_addMenuTableView.frame = CGRectMake(WIDTH - 30, 68, 0.1, 0.1);
}];
}