UIImagePickerController之Block回调
方法使用:引入头文件
#import "UIImagePickerController+Block.h"
我这拖出来的两个属性
@property (weak, nonatomic) IBOutlet UIImageView *showImageView;
- (IBAction)openClick;
// 实用方法
- (IBAction)openClick {
UIImagePickerController_Block *imagePickerVC = [UIImagePickerController_Block defaultController];
[imagePickerVC initWith:self SourceType:UIImagePickerControllerSourceTypePhotoLibrary backBlcok:^(id obj) {
self.showImageView.image = obj;
}];
}
UIImagePickerController+Block.h文件如下
#import <UIKit/UIKit.h>
typedef void (^CallBackBlcok) (id obj);
@interface UIImagePickerController_Block : UIImagePickerController
+ (UIImagePickerController_Block *)defaultController;
/**
* @brief 选中照片回调方法.
*
* @param controller 当前控制器
*
* @param type 相片来源
*
* @param callbackblock 回调block,返回选中的image对象
*
*/
- (void)initWith:(UIViewController *)controller SourceType:(UIImagePickerControllerSourceType)type backBlcok:(CallBackBlcok)callbackblcok;
UIImagePickerController+Block.m文件如下
//
// UIImagePickerController+Block.m
// UIImagePickerController+Block
//
// Created by Apple on 15/9/24.
// Copyright © 2015年 Zhipin. All rights reserved.
//
#import "UIImagePickerController+Block.h"
#import <objc/runtime.h>
static id blockkey;
@interface UIImagePickerController_Block ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>
@end
@implementation UIImagePickerController_Block
+ (UIImagePickerController_Block *)defaultController{
static UIImagePickerController_Block *intance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
intance = [[self alloc]init];
});
return intance;
}
#pragma mark - ============== 选中照片的回调
- (void)initWith:(UIViewController *)controller SourceType:(UIImagePickerControllerSourceType)type backBlcok:(CallBackBlcok)callbackblcok{
objc_setAssociatedObject(self, &blockkey, callbackblcok, OBJC_ASSOCIATION_COPY_NONATOMIC);
UIImagePickerController_Block *imageViewController = [UIImagePickerController_Block new];
// 设置照片来源
imageViewController.sourceType = type;
// 设置代理
imageViewController.delegate = self;
[controller presentViewController:imageViewController animated:YES completion:nil];
}
#pragma mark - ============== 选中照片
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
// UIImagePickerControllerOriginalImage 原始图片
// UIImagePickerControllerEditedImage 编辑后图片
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
CallBackBlcok block = (CallBackBlcok)objc_getAssociatedObject(self, &blockkey);
if (block) {
block(image);
}
[picker dismissViewControllerAnimated:YES completion:NULL];
}
#pragma mark - ============== 取消相册
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:NULL];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
@end
==================== 纯手打。。。。。。。。==================
==================================================
UIImagePickerController之Block回调的更多相关文章
- iOS 键盘添加完成按钮,delegate和block回调
这个是一个比较初级一点的文章,新人可以看看.当然实现这个需求的时候自己也有一点收获,记下来吧. 前两天产品要求在工程的所有数字键盘弹出时,上面带一个小帽子,上面安装一个“完成”按钮,这个完成按钮也没有 ...
- Objective-C中的Block回调模式
在前面的博客中提到了Block的概念和使用方法,个人感觉Block最爽的用法莫过于在回调时用block.感觉比委托回调和目标方法回调用着要顺手,好不好用还得读者亲自用一下才知道.如果 读者之前用过SS ...
- Block回调
•Block的定义 •Block.委托.通知.回调函数,它们虽然名字不一样,但是原理都一样,都是"回调机制"的思想的具体实现 •前面的代理模式的项目改为Block回调实现 ...
- UIAlertController——之Block回调
iOS8.0之后出现的提示框 =.=,比自己去改block回调要好.
- 第十篇、自定义UIBarButtonItem和UIButton block回调
// 自定义导航栏左边按钮 self.navigationItem.leftBarButtonItem = [JQBlockedBarButtonItem blockedBarButtonItemWi ...
- iOS很重要的 block回调
刚刚进入ios开发行业,发现开发中要用到大量的block回调,由此可见它的重要性.学习它之前我也是网上找的资料,推荐这篇文章http://blog.csdn.net/mobanchengshuang/ ...
- 代码块(Block)回调一般阐述
本章教程主要对代码块回调模式进行讲解,已经分析其他回调的各种优缺点和适合的使用场景. 代码块机制 Block变量类型 Block代码封装及调用 Block变量对普通变量作用域的影响 Block回调接口 ...
- 63.delegate回调 和block回调
效果:viewController里面放置一个按钮和Lab,点击按钮进入oneViewController(delegate回调)或者BlockViewController(block回调),两者控制 ...
- iOS开发-Block回调
关于Block之前有一篇文章已经写过一篇文章Object-C-代码块Block回顾,不过写的比较浅显,不能体现出Block在实际开发中的重要性,关于Block的基础知识,可以参考之前的博客.在实际开发 ...
随机推荐
- noip2008 火柴棒等式
P1149 火柴棒等式 1.9K通过 3.7K提交 题目提供者该用户不存在 标签搜索/枚举模拟2008NOIp提高组 难度普及- 提交该题 讨论 题解 记录 题目描述 给你n根火柴棍,你可以拼出多 ...
- 再看.net本质(二)
3.[HTTP协议] 当浏览器寻找到Web服务器的地址之后,浏览器将帮助我们把对服务器的请求转换为一系列参数发送给Web服务器.服务器收到浏览器的请求对数之后,将会分析这些数据并进行处理,然后向浏览 ...
- jQuery之Nestable
空间属性置顶: 属性 说明 change 事件,当控件改变时触发 nestable 方法,获取顺序JSON数据,形式如下: [{"id":1},{"id":2} ...
- 跨域请求之JSONP 二
续上篇,加两个实用功能 1,增加data属性,请求参数2,增加scope属性,可以让回调函数在指定的上下文中执行 接口如下 1 2 3 4 5 6 Sjax.load(url, { data ...
- asp.net中导出Execl的方法
一.asp.net中导出Execl的方法: 在 asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址 输出在浏览器上:一种是将文件直接将文件输出流写给 ...
- std::cout彩色输出
Mac OS效果 Windows 效果 想写这个东西其实是因为最近要写个命令行的工具,但是有个问题是什么呢?就是传统的那个黑漆漆的窗口看起来很蛋疼.并且完全看不到重点,于是就想起 来这么一个东西.相对 ...
- [原]sdut2624 Contest Print Server (大水+大坑)山东省第四届ACM省赛
本文出自:http://blog.csdn.net/svitter 原题:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&am ...
- IOS学习感想
1.一开始学习的时候将会感到非常的难,即使自己曾经学过C/JAVA/HTML/CSS/JS/PHP等,但是对于学过C++的人来说,我就不知道了.因为它的语法不同于任何一门语言,所以说入门难是正常的.但 ...
- pos机抹零功能
抹零功能设置包括抹分-0.抹角-1.抹元-2. 前台界面和逻辑代码如下 //抹零设置 2016/8/16 QT if (sweepCents.Checked==true) { BusinessClas ...
- c#中判断对象为空的几种方式(字符串等)
(1)先了解几个与空类型相关的关键字和对象 Null : 关键字表示不引用任何对象的空引用,它是所有引用类型变量的默认值,在2.0版本之前也就只有引用变量类型可以为null,如(string a=n ...