swift 如何将重新加载按钮添加到iOS Widget?

3lxsmp7m  于 2023-08-02  发布在  Swift
关注(0)|答案(1)|浏览(189)

如何在iOS上向我的小部件添加重新加载按钮?
我知道Widget应该是只读的,没有交互元素。
但是像“谷歌Map”这样的应用程序确实有一个重新加载按钮。

他们是如何做到这一点的?


的数据
向视图中添加一个简单的Button将显示该按钮。
但按下它时,应用程序将打开,新闻界将不会注册。
使用deeplinks也会打开我的应用程序。我只要一个普通的重装按钮。

py49o6xq

py49o6xq1#

屏幕截图显示了已弃用的Today Extension小部件。现在我们使用WidgetKit。
我设法在iOS 17的AppIntents中添加了重新加载按钮:
1.创建意图

import AppIntents

struct ReloadWidgetIntent: AppIntent {
    static var title: LocalizedStringResource = "Reload widget"
    static var description = IntentDescription("Reload widget.")

    init() {}

    func perform() async throws -> some IntentResult {
        return .result()
    }
}

字符串
1.创建重新加载视图

import SwiftUI
import Intents

struct ReloadView: View {

    var body: some View {
        Button(intent: ReloadWidgetIntent()) {
            Text("Refresh")
        }
    }
}


1.将重新加载视图添加到小部件视图中

import SwiftUI

struct MyWidgetView : View {
var entry: MyTimelineProvider.Entry

var body: some View {
    VStack {
        Text(entry.date)
            .invalidatableContent()
        ReloadView()
    }
}

**. invalidableContent()**用于指示此视图将被更新的动画。这是我发现的唯一一种动画小部件刷新的方法。

来源:Apple wwdc23

相关问题