• IOS


    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
  • 相关阅读:
    【LCT维护基环内向树森林】BZOJ4764 弹飞大爷
    【LCT】BZOJ3091 城市旅行
    【LCT+主席树】BZOJ3514 Codechef MARCH14 GERALD07加强版
    【最大权闭合子图】bzoj4873 [Shoi2017]寿司餐厅
    【LCT】BZOJ2049 [SDOI2008]Cave 洞穴勘测
    【有上下界的网络流】ZOJ2341 Reactor Cooling(有上下界可行流)
    【费用流】BZOJ1061: [Noi2008]志愿者招募(这题超好)
    从输入url到页面加载的过程
    forEach和map的区别
    理解 JavaScript 对象原型、原型链如何工作、如何向 prototype 属性添加新的方法。
  • 原文地址:https://www.cnblogs.com/mcj-coding/p/3574564.html
Copyright © 2020-2023  润新知