iOS新特性扩展之Today分享(2)

原创 2016年05月31日 12:52:29

1、在上一小节中,我们简单介绍了Today扩展的数据存储应用,但是对于共享内容比较多的话,单纯的用NSUserDefaults存储还是不够的,有同学可能会用数据库之类的存储方式,但数据库也是不太简单的,这里我们可以用2种方式解决,共享文件和共享frameWork。
2、共享文件
(1)首先我们要创建一个swift文件并写入代码,创建过程就不多说了,
这里写图片描述
(2)文件创建完成之后,我们需要把文件添加到Today target中进行编译,
这里写图片描述
(3)添加完成之后,就可以在Today文件中使用了,

class TodayViewController: UIViewController, NCWidgetProviding {

    @IBOutlet weak var labelView: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        let myData = Mydata()
        myData.setMyData()
        labelView.text = myData.title

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // 更新界面的时候调用
    func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {
        // Perform any setup necessary in order to update the view.

        // If an error is encountered, use NCUpdateResult.Failed
        // If there's no update required, use NCUpdateResult.NoData
        // If there's an update, use NCUpdateResult.NewData

        labelView.text = "界面数据更新了"
        completionHandler(NCUpdateResult.NewData)
    }
}

(4)目前为止,文件共享就完成了。

3、framework共享
(1)如果要共享的文件比较多,有可能添加删除重复在做,就很容易混乱,所以我们还可以利用framework来完成,把需要的文件制作成framework,这样的话,就可以只利用framework中的文件就可以了,对其他的文件没有影响。
(2)创建framework

这里写图片描述

点击target之后会出现下面的界面,

这里写图片描述

点击next之后,会提示我们输入framework的名称,

这里写图片描述

然后点击完成,我们的framework就创建好了,

这里写图片描述

(3)配置framework(1)
首先将我们创建的那个文件从应用target中删除,

这里写图片描述

这里系统会默认吧我们创建的framework添加进去,所以我们不用手动添加,

这里写图片描述

(4)配置framework(2)
把我们创建的文件添加到framework中,

这里写图片描述

这样的话,我们的framework配置就完成了

(5)使用framework
下面就可以直接使用framework中的文件了,
首先在ViewController.swift中导入我们的framework
这里写图片描述
这里报了一个错,是因为我们应用target支持的版本是8.3,framework target支持的版本是9.1,吧版本改成统一的再编译就可以了。

需要注意的就是,我们需要把MyData.swift中的方法全部改成public,

这里写图片描述

这样的话,直接就可以使用了,应用的使用:

这里写图片描述

Today扩展的应用:

import UIKit
import NotificationCenter

import MyDataKit

class TodayViewController: UIViewController, NCWidgetProviding {

    @IBOutlet weak var labelView: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        let myData = Mydata()
        myData.setMyData()
        labelView.text = myData.title

    }

到这里文件的共享就结束了。

4、一般的应用的Today都是可以通过点击进入到本应用中,同学们可以试一下其他的应用跳转,这里我们也简单测试一下,

(1)要跳转到应用中,首先需要注册Schemes,
这里写图片描述

(2)注册好之后,就可以拿来用了,首先在Today上放一个Button,并拉线设置点击事件,并在事件中写上代码:

@IBAction func btnClick(sender: UIButton) {

        let url = NSURL(string: "weatherEnter://enter")
        extensionContext?.openURL(url!, completionHandler: { (isComple) -> Void in

        });

    }

(3)接收响应
在AppDelegate.swift中实现一个方法,如下:

 func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {

        if url.scheme == "weatherEnter" {

            if url.host == "enter" {
                let alert = UIAlertView(title: "提示", message: "通过Today打开", delegate: nil, cancelButtonTitle: "取消")
                alert.show()

            }
            return true
        }

        return false
    }

这样的话,基本上就完成了。

注意:Today扩展中不支持打印数据的,直接拿数据来用就可以的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS新特性扩展之Today分享(1)

1、在iOS 的新特性中,包含了几种特殊的分享,下面就首先介绍一下Today的分享扩展应用。 2、Today扩展的用处还是比较多的,利用Today扩展,我们不用进入到应用程序中就能够直接看到应用中的...

iOS8新特性扩展(Extension)应用之一——Today扩展

iOS8新特性扩展(Extension)应用之一——Today扩展 一、理解扩展 1、简介 2、几种扩展模式 (1)今日视图扩展:today (2)分享功能扩展 (3)个性操作 (4)照...

ios-新浪微博开发-14(新特性2)

在上次的基础上进行代码的修改 #import "QHNewfeatureViewController.h" #define QHNewfeatureCount 4 @interface QHNe...

iOS9新特性——堆叠视图UIStackView(2)

UIStackView提供了一个高效的接口用于平铺一行或一列的视图组合。对于嵌入到StackView的视图,你不用再添加自动布局的约束了。Stack View管理这些子视图的布局,并帮你自动布局约束。...

ios7新特性--2

iOS 7 为应用程序提供新的后台执行模式: ·       应用程序需要需要下载新内容,可以向系统注册,这样程序会被定期唤起或者启动,然后可以在后台下载内容。要注册这个功能,需要打开Info.pl...

RAD Studio XE2新特性概览:多平台支持、原生iOS与Android、HD与3D动画及云

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://infoq.com/cn/news/2011/09/RAD-Studio-XE2 继去年8月30日发布XE产品线到现在已经过去一年...

iOS新特性之扩展开发攻略 - Share Extension

1. 什么是扩展? 扩展( Extension )是 iOS 8 中引入的一个非常重要的新特性。扩展让 app 之间的数据交互成为可能。用户可以在 app 中使用其他应用提供的功能,而无需离开当前的...

iOS8新特性扩展(Extension)应用之四——自定义键盘控件

目录[-] iOS8新特性扩展(Extension)应用之四——自定义键盘控件 一、了解UIInputViewController类 二、创建一款最简单的数字输入键盘 iO...

iOS 8新特性之扩展:App Extensions

extension是iOS8新开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补iOS的沙盒机制对应用间通信的限制。 extension的出现,为用户提供了在其它应用中使用我们应用提供...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS新特性扩展之Today分享(2)
举报原因:
原因补充:

(最多只允许输入30个字)