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

来源:互联网 发布:windows程序设计教材 编辑:程序博客网 时间:2024/06/05 05:33

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 UIKitimport NotificationCenterimport MyDataKitclass 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扩展中不支持打印数据的,直接拿数据来用就可以的。

0 0
原创粉丝点击