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扩展中不支持打印数据的,直接拿数据来用就可以的。
- iOS新特性扩展之Today分享(2)
- iOS新特性扩展之Today分享(1)
- iOS 8新特性之扩展(Extension)
- iOS ios8新特性之扩展
- iOS ios8新特性之扩展详解
- iOS ios8新特性之扩展
- iOS 8新特性之扩展
- iOS 8新特性之扩展
- iOS 8新特性之扩展:App Extensions
- iOS新特性之扩展开发攻略 - Share Extension
- iOS新特性之扩展开发攻略 - Share Extension
- iOS-widget-Today 扩展
- iOS8新特性Extension之Today插件的代码测试
- iOS8新特性扩展(Extension)应用之一——Today扩展
- iOS开发之App Extension(应用扩展)之 -- Today Extension
- iOS8新特性扩展(Extension)应用之二——分享插件
- iOS7新特性之TextKit(二)FontResizeDemo扩展
- iOS 新特性分列式 之 iOS 8.x - 主要内容:应用扩展、手动对焦、Size Class
- android studio导入第三方jar
- mysql修改密码后,phpMyadmin无法登陆
- 新闻搜索浏览
- android studio报错Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled解决方案
- 专题一 贪心算法总结
- iOS新特性扩展之Today分享(2)
- 你编程入门了吗
- 【整理】html知识点
- Android 获取屏幕显示信息
- 服务器架构演变之路学习
- Android 获取memoryinfo
- 【整理】html5知识点1
- 训练3 习题24
- OC语言5—封装