新建工程,然后点击File->New->Target...
屏幕快照 2017-01-05 下午1.43.07.png 屏幕快照 2017-01-05 下午1.43.36.png
点击Today Extension
创建一个Extension,名字你定~~
建立完成之后选中
屏幕快照 2017-01-05 下午1.48.29.png
运行,你就可以看到你创建widget,上面写着Hello world!
哈哈
你可以点击你的xib来修改你的样式。
这里忽略...
接下来就是点击进入APP了
我们在扩展中添加一个button,并且关联按钮事件
@IBAction func action(_ sender: Any)
{
// 获取当前的content(上下文)open->url
self.extensionContext?.open(NSURL.init(string:"iOSWidget://page=UserInfoVC") as! URL,
completionHandler: { (finish) in
//可以做相应的操作
})
}
"iOSWidget://page=UserInfoVC":解释
iOSWidget
这需要你在你的主程序中plist中添加注册
后面的自定义
UserInfoVC
使我们下面要使用的跳转到相应的ViewController1、先通过主程序更新扩展的数据
首先在你的主程序和你的扩展中添加共同的Group
屏幕快照 2017-01-05 下午2.41.46.png
我们在主程序中添加按钮,并关联按钮事件
@IBAction func setData(_ sender: Any) {
//这里简单的传递一个字符串,让扩展的label更新
let defaults = UserDefaults(suiteName: "group.com.MAO.CutImage")
defaults?.setValue("更新了数据", forKey: "update")
}
在扩展中
// 这是系统的方法
func widgetPerformUpdate(completionHandler: (@escaping (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
let defaults = UserDefaults(suiteName: "group.com.MAO.CutImage")
if let updateString = defaults?.value(forKey: "update") as? String
{
label.text = updateString
}
completionHandler(NCUpdateResult.newData)
}
我们点击主程序的按钮会触发事件,然后退出看扩展的程序,会发现数据变了。嘿嘿。。。
2、点击扩展进入APP进行相应的事件
当我们点击在扩展中的进入APP按钮之后
我们会在AppDelegate中捕捉到相应的open
func application(_ application: UIApplication, handleOpen url: URL) -> Bool
{
let prefix:String = "iOSWidget://page="
if (url.absoluteString.range(of: prefix) != nil) {
let page = url.absoluteString.substring(from: prefix.endIndex)
// 这里可以根据这个字符串做相应的操作
print(page)
}
return true
}
扩展阅读: iOS8 扩展
今天是腊八节,祝大家8888888888888888888发发发发发发发发发发发发
网友评论