实现效果如下:

实现代码如下:

 @interface ViewController ()<UIViewControllerTransitioningDelegate>

 {

     UILabel *optionLabel;   //显示选中值得label

     BOOL isPresentingOrDismissingOption;

     UIView *buildingOptionView;  //选择的视图

 }

 @end

 @implementation ViewController

 - (void)viewDidLoad {

     [super viewDidLoad];

     self.view.backgroundColor = [UIColor greenColor];

     buildingOptionView = [[UIView alloc] initWithFrame:CGRectMake(, , , )];

     [self.view addSubview:buildingOptionView];

     buildingOptionView.backgroundColor = [UIColor redColor];

     buildingOptionView.layer.cornerRadius = ;

     buildingOptionView.clipsToBounds = YES;

     UIGestureRecognizer *tapOnBuildingOpetionView = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnBuildingOpetionView:)];

     [buildingOptionView addGestureRecognizer:tapOnBuildingOpetionView];

     optionLabel = [[UILabel alloc] initWithFrame:CGRectMake(, , buildingOptionView.width - , )];

     optionLabel.text = @"第一教学楼";

     [buildingOptionView addSubview:optionLabel];

     optionLabel.textColor = [UIColor blackColor];

     UIImageView *arrowImageView = [[UIImageView alloc] initWithFrame:CGRectMake(optionLabel.right + ,optionLabel.top + ,,)];

     arrowImageView.image = [UIImage imageNamed:@"classroom_arrow_icon"];

     [buildingOptionView addSubview:arrowImageView];

 }

 //手势触发方法

 - (void)tapOnBuildingOpetionView:(UITapGestureRecognizer *)tap{

     NSLog(@"列表选择");

  //弹出选择列表

     OptionTableView *optionView = [[OptionTableView alloc]initWithFrame:CGRectMake(buildingOptionView.left + ,buildingOptionView.bottom + ,,) style:UITableViewStylePlain];

     optionView.buildingsArray = @[@"第一教学楼", @"第二教学楼", @"第三教学楼", @"第四教学楼", @"第五教学楼", @"第六教学楼", @"第七教学楼", @"第八教学楼"];

     [self.view addSubview:optionView];

     //block的实现,给label赋值

     [optionView setDismissOnBuilding:^(NSString *selectedBuilding) {

         optionLabel.text = selectedBuilding;

     }];

 }

OptionTableView的实现代码如下:

 #import <UIKit/UIKit.h>

 @interface OptionTableView : UITableView<UITableViewDataSource,UITableViewDelegate>

 @property (nonatomic, strong) NSArray *buildingsArray;
@property (nonatomic, copy) void (^dismissOnBuilding)(NSString *building); @end
 static NSString *const buildingOptionCellId = @"Cell";

 @interface OptionTableView ()

 @end
@implementation OptionTableView - (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style{ self = [super initWithFrame:frame style:style];
if (self) { self.dataSource = self;
self.delegate = self; [self registerClass:[UITableViewCell class] forCellReuseIdentifier:buildingOptionCellId];
self.backgroundColor = [UIColor blueColor]; }
return self; } #pragma mark - Table view dataSource //行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
{ return self.buildingsArray.count; } //创建单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:buildingOptionCellId forIndexPath:indexPath];
cell.textLabel.text = self.buildingsArray[indexPath.row];
return cell; } #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //block实现选中的值的传递 if (self.dismissOnBuilding) {
self.dismissOnBuilding(self.buildingsArray[indexPath.row]);
} //当选择完毕表视图收起
self.frame = CGRectZero;
}

写的不好,有更好的方法,欢迎大家告诉我,谢谢!!!

实现下拉弹出视图和Block的简单实现的更多相关文章

  1. iOS开发——UI篇&下拉弹出列表选择项效果

    下拉弹出列表选择项效果 右边菜单中的按键,点击弹出一个列表可选择,选择其中一个,响应相应的事件并把文字显示在右边的菜单上:弹出下拉效果使用LMDropdownView插件,可以用POD进行加载pod  ...

  2. 【Bootstrap3.0建站笔记二】button可下拉弹出层

    1.button可下拉弹出层: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hpbmFwbGFu/font/5a6L5L2T/fontsize/400 ...

  3. CCOMBOX下拉弹出框,因属性对话框自动隐藏而弹出框没有隐藏问题

    关于这个问题是可以使用 使其失去焦点 releasecapture()解决的,但是鼠标在下拉列表中的item中经过时,调用releasecapture()后会选中最后mousemove过的item项. ...

  4. android下拉弹出动画

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http:// ...

  5. IOS弹出视图 LewPopupViewController

    LewPopupViewController是一款IOS弹出视图软件.iOS 下的弹出视图.支持iPhone/iPad. 软件截图 使用方法 弹出视图 1 2 3 4 5 PopupView *vie ...

  6. 弹性ScrollView,和下啦刷新的效果类似 实现下拉弹回和上拉弹回

    今天做了一个弹性ScrollView,和下啦刷新的效果类似,我想这个很多需求都用的这种效果 其实这是一个自定义的scrollView,上代码,这是我写在一个公共的组件包里的 package com.p ...

  7. iOS实现自定义的弹出视图(popView)

    前段时间,在项目中有个需求是支付完成后,弹出红包,实现这么一个发红包的功能.做了最后,实现的效果大致如下: 一.使用方法 整个ViewController的代码大致如下 // //  SecondVi ...

  8. 弹性ScrollView,和下啦刷新的效果相似 实现下拉弹回和上拉弹回

    今天做了一个弹性ScrollView,和下啦刷新的效果类似,我想这个非常多需求都用的这样的效果 事实上这是一个自己定义的scrollView,上代码.这是我写在一个公共的组件包里的 package c ...

  9. php网页,想弹出对话框, 消息框 简单代码

    php网页,想弹出对话框, 消息框 简单代码 <?php echo "<script language=\"JavaScript\">alert(\&q ...

随机推荐

  1. Hive窗口函数案例详解

    语法: 分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置) 常用分析函数: 聚合类 avg().sum().max(). ...

  2. Java位运算总结:位运算用途广泛

    前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...

  3. keil mdk 菜单 “project” 崩溃问题解决

    今天发现我的 Keil MDK5.28z win10系统上面,点击 Project 菜单立即崩溃.网上找到了解决方法 简单粗暴的处理方法:重装keil ,但是依然点击 project 崩溃. 通过搜索 ...

  4. 洛谷P1050 循环【java大数】

    题目:https://www.luogu.org/problemnew/show/P1050 题意:给定一个数$n$,问$n$的幂次的最低$k$位的循环节是多少. 思路:这真是我做过最难的java大数 ...

  5. 小白学习.NET的初期经验

    对于.NET,刚开始确实很迷茫,确实,对于程序员这种职业我不是很了解,我以前是学数控的 ,对于我心目中的程序而言,程序就是我常用的那些代码,毕竟做了四五年的数控,同样都是程序,给我的了解就是都是代码: ...

  6. ACWing P372 棋盘覆盖 题解

    Analysis 这是一个经典的二分图问题,我们将图进行奇偶染色,注意边界条件的判断.再跑一遍匈牙利算法就行了,跟上一题很像. #include<iostream> #include< ...

  7. learning scala implicit class

    隐式类可以用来扩展对象的功能非常方便 example: object ImplicitClass_Tutorial extends App { println("Step 1: How to ...

  8. [Luogu] 奶酪

    https://www.luogu.org/problemnew/show/3958 #include <iostream> #include <cstdio> #includ ...

  9. requests记录

    http://docs.python-requests.org/zh_CN/latest/user/quickstart.html r = requests.get('http://httpbin.o ...

  10. PHP全栈学习笔记30

    变量:整型(int) 浮点(float).布尔(bool).字符串(string) 混合类型: 数组(array).对象(object) 特殊类型:空(null). 资源(resouce).回调(ca ...