1. 什么是Passbook

Passbook是苹果公司于北京时间2012年6月12日上午,在全球开发者大会(WWDC)上宣布了iOS 6系统将提供操作一个全新的应用——Passbook
这是一款可以存放登机牌、会员卡和电影票的工具。该功能将整合来自各类服务的票据,包括电影票、登机牌、积分卡和礼品卡等
Passbook是基于地理位置的,通过定位功能,当用户走到相关商店或场所附近时,对应的票据将会被自动显示
Passbook只能在iPhone和iPod touch设备中使用
 
2.实例代码
#import "GViewController.h"
// 添加框架
#import <PassKit/PassKit.h>

@interface GViewController ()

// 存放加载的pkpass文件
@property (strong,nonatomic) NSArray *dataList;

@end

@implementation GViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 获得加载到得数据
    _dataList = [self loadPasses];
    
    // IOS6 和 IOS7 适配
    if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0 ) {
        [self.tableView setContentInset:UIEdgeInsetsMake(20, self.tableView.contentInset.left, self.tableView.contentInset.bottom, self.tableView.contentInset.right)];
        
    }
}

/**
 *  加载数据
 *
 *  @return 返回文件后缀名为pkpass 的文件
 */
- (NSArray *)loadPasses
{
    // 1.获得mainBundle 的路径
    NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
    
    // 2.取出mainBundle中的文件,存放在数组中
    NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:resourcePath error:nil];
    
    // 3.遍历数组,取出pkpass 文件
    NSMutableArray *arrayM = [NSMutableArray array];
    for (NSString *fileName in array) {
        // 获取文件后缀名为.pkpass 的文件
        if ([fileName hasSuffix:@".pkpass"]) {
            [arrayM addObject:fileName];
        }
    }
    
    // 4.返回获得的数据
    return arrayM;
}

-(void)openWithName:(NSString *)name
{
    // 1.根据文件名获取文件完整路径
    NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:name];
    
    // 2.将文件加载到NSData中
    NSData *data = [NSData dataWithContentsOfFile:path];
    
    // 3.实例化pkpass (根据NSData 数据)
    PKPass *pass = [[PKPass alloc] initWithData:data error:nil];
    
    // 4.将pass实例添加到pass视图中
    PKAddPassesViewController *controller = [[PKAddPassesViewController alloc] initWithPass:pass];
    
    // 5.显示pass视图控制器
    [self presentViewController:controller animated:YES completion:nil];
}
#pragma mark - tableView 的数据源方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return _dataList.count;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 1.设置cell的唯一标示符
    static NSString *ID = @"cell";
    
    // 2.cell重用
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID forIndexPath:indexPath];
    // 3.设置cell的内容
    cell.textLabel.text = _dataList[indexPath.row];
    
    return cell;
}

#pragma mark - tableView 的代理方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self openWithName:_dataList[indexPath.row]];
}
@end

IOS - Passbook的更多相关文章

  1. PHP资源列表

    一个PHP资源列表,内容包括:库.框架.模板.安全.代码分析.日志.第三方库.配置工具.Web 工具.书籍.电子书.经典博文等等. 初始翻译信息来自:<推荐!国外程序员整理的 PHP 资源大全& ...

  2. 【PHP资源】PHP 资源大全

    看到这篇文章不错,转来收藏 依赖管理 依赖和包管理库 Composer/Packagist:一个包和依赖管理器 Composer Installers:一个多框架Composer库安装器 Pickle ...

  3. 【PHP开发】国外程序员收集整理的 PHP 资源大全

    依赖管理 依赖和包管理库 Composer/Packagist:一个包和依赖管理器 Composer Installers:一个多框架Composer库安装器 Pickle:一个PHP扩展安装器 其他 ...

  4. 优秀的PHP开源项目集合

    包管理Package Management Package Management Related 框架 框架组件 微框架Micro Frameworks 内容管理系统Content Managemen ...

  5. 推荐!国外程序员整理的 PHP 资源大全

    推荐!国外程序员整理的 PHP 资源大全 2014/08/02 · PHP, 工具与资源 · 8.5K 阅读 · 1 评论· php 分享到:0 与<YII框架>不得不说的故事—安全篇 R ...

  6. PHP框架、库和软件资源大全(整理篇)

    php的资料 https://github.com/ziadoz/awesome-php Awesome PHP A curated list of amazingly awesome PHP lib ...

  7. 国外程序员收集整理的PHP资源大全

    依赖管理 依赖和包管理库 Composer/ Packagist:一个包和依赖管理器 Composer Installers:一个多框架Composer库安装器 Pickle:一个PHP扩展安装器 其 ...

  8. [ Alcatraz ]管理Xcode插件

    [ Alcatraz 配置 ] 1.包管理器在线安装 Terminal终端 $ curl -fsSL https://raw.githubusercontent.com/supermarin/Alca ...

  9. 【转】国外程序员收集整理的PHP资源大全

    ziadoz在 Github发起维护的一个PHP资源列表,内容包括:库.框架.模板.安全.代码分析.日志.第三方库.配置工具.Web 工具.书籍.电子书.经典博文等等.伯乐在线对该资源列表进行了翻译, ...

随机推荐

  1. 透过统计力学,模拟软物质——EPJE专访2016年玻尔兹曼奖得主Daan Frenkel

    原文来源:Eur. Phys. J. E (2016) 39: 68 2016年玻尔兹曼奖得主Daan Frenkel接受欧洲物理学报E专访,畅谈统计物理在交叉科学研究中的前所未有的重要性. 统计物理 ...

  2. fullpage.js小技巧

    创造一个自适应的section: 在 section 类旁边加上类 fp-auto-height 例如:<div class="section fp-auto-height" ...

  3. XSS Filter绕过

    之前挖到某金融网站的xss 但是困于xss filter无奈不好下手.只能在火狐下弹窗. 以下该图是我的测试. 后来发给一个Invoker哥们儿.成功给我发来payload成功绕过了XSS Filte ...

  4. OpenCV成长之路(6):数学形态学基本操作及其应用

    数学形态学实际上可以理解为一种滤波行为,所以很多地方称它为形态学滤波.有了个这概念,我们就能更好的理解它.我们滤波中用的滤波器(kernel)在这里被称为结构元素,结构元素往往是由一个特殊的形状构成, ...

  5. OpenCv haar+SVM训练的xml检测人头位置

    注意:opencv-2.4.10 #include "stdio.h"#include "string.h"#include "iostream&qu ...

  6. 分布式架构 Hadoop 2.7.X 安装和配置

    一.安装环境 硬件:虚拟机 操作系统:Ubuntu 14 32位 IP:59.77.132.28主机名:admin安装用户:root 二.安装JDK 安装JDK1.7或者以上版本.这里安装jdk1.7 ...

  7. Google java style

    这里主要是记录关于java style的笔记. 1,Google的. 博客链接(中文):http://www.cnblogs.com/lanxuezaipiao/p/3534447.html. 官方链 ...

  8. 蓝牙模块连接后出现ANR,日志记录

    11-25 16:29:48.433 14507-14561/myapplication.com.myblue W/MALI: glDrawArrays:714: [MALI] glDrawArray ...

  9. jquery对url中的中文解码

    项目中要实现一个select选择器选择后跳转url,并保存selected的值. url是用get来传递参数,所以考虑加载新页面时,读取参数值,并赋值到select中. 但是由于url的参数使用的是中 ...

  10. Git – Fast Forward 和 no fast foward

    Git 很是强大,在体验过rebase的华丽之后,再次发现之前在TFS上遇到的问题一下都有解了.但也印证了Git深入并非易事.这篇就谈下一个容易迷糊的概念:Fast forward. Fast-For ...