grw*_*lde 9 widget objective-c swiftui ios14
我有一个现有的 Objective-C 应用程序,并为它开发了一个 SwiftUI iOS 14 小部件。到现在为止还挺好。现在我正在尝试从我的 Objective-C 应用程序重新加载时间线。我知道没有用于访问 WidgetCenter 的 Objective-C api,所以我已经实现了 Apple 文档中概述的桥接步骤(至少我认为我是 Swift 的新手)。我似乎无法在我的 Objective-C 应用程序中识别 Widget Center 和 WidgetCenter.shared.reloadAllTimelines()。我尝试了很多方法都没有成功,所以我一定是做错了什么。任何帮助或建议将不胜感激。
inc*_*iko 12
我遇到了同样的问题。对此的解决方案是创建一个 swift 文件,例如:WidgetKitHelper。如果它不是自动生成的,也可以用它创建分配的 swift-objc 头文件(桥接头文件),你可以手动添加它(搜索它)。在 helper 对象中,您可以访问 widgetkit,如果您完成剩下的工作以便能够从您的 objc 代码中看到 swift 代码,您可以将其用作包装器。
import WidgetKit
@available(iOS 14.0, *)
@objcMembers final class WidgetKitHelper: NSObject {
class func reloadAllWidgets(){
#if arch(arm64) || arch(i386) || arch(x86_64)
WidgetCenter.shared.reloadAllTimelines()
#endif
}
}
Run Code Online (Sandbox Code Playgroud)
首先通过添加以下内容导入 swift 代码:
#import "YourProjectName-Swift.h"
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:
[WidgetKitHelper reloadAllWidgets];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1672 次 |
| 最近记录: |