OC主工程刷新WidgetKit 桌面小組件

當(dāng)想在主工程刷新小組件時(shí),會(huì)使用到如下代碼

WidgetCenter.shared.reloadAllTimelines()
  1. 嘗試在 AppDelegate.m中導(dǎo)入WidgetKit頭文件
    WX20201101-111048@2x.png

如圖,會(huì)發(fā)現(xiàn)只有兩個(gè)頭文件,打開頭文件后,找不到我們想要使用的代碼定義。
2.由于第一步,所以我們創(chuàng)建 WidgetKitManager.swift文件,
由于主工程是純OC工程,因此創(chuàng)建時(shí)會(huì)提示我們創(chuàng)建橋接文件。
SwiftUIAndAppDemo-Bridging-Header

3.我們需要在WidgetKitManager.swift中編寫刷新小組件的代碼

import WidgetKit

@objc
@available(iOS 14.0, *)
class WidgetKitManager: NSObject {

    @objc
    static let shareManager = WidgetKitManager()
    
    /// MARK: 刷新所有小組件
    @objc
    func reloadAllTimelines() {
       #if arch(arm64) || arch(i386) || arch(x86_64)
            WidgetCenter.shared.reloadAllTimelines()
            #endif
    }

    /// MARK: 刷新單個(gè)小組件
    /*
     kind: 小組件Configuration 中的kind
     */
    @objc
    func reloadTimelines(kind: String) {
          #if arch(arm64) || arch(i386) || arch(x86_64)
        WidgetCenter.shared.reloadTimelines(ofKind: kind)
            #endif
    }
}

4.在需要使用Swift代碼的地方導(dǎo)入頭文件,名字為主工程名-Swift.h

此文件找不到,但是實(shí)際存在
1604200613994.jpg
if (@available(iOS 14.0, *)) {
        [[WidgetKitManager shareManager] reloadAllTimelines];
        
        [[WidgetKitManager shareManager] reloadTimelinesWithKind:@"Extension_Two"];
    }

備注

 #if arch(arm64) || arch(i386) || arch(x86_64)
            code
            #endif

如果不加上述代碼,會(huì)打包報(bào)錯(cuò)
刷新單個(gè)小組件或者全部小組件根據(jù)自己的需求使用,當(dāng)刷新單個(gè)小組件時(shí),傳入kind值。

假如傳錯(cuò)或者不傳,暫未嘗試。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容