ios 为什么我的Apple Watch复杂功能没有显示任何内容?

1bqhqjot  于 2023-01-14  发布在  iOS
关注(0)|答案(2)|浏览(551)

我使用Xcode的"iOS App with Watchkit App"模板创建了一个应用,进入TARGETS并选中Complications Configuration > Supported Families > Graphic Corner,然后在扩展中打开ComplicationController.swift并修改getCurrentTimelineEntry()

func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
    let cornerTemplate = CLKComplicationTemplateGraphicCornerStackText()
    cornerTemplate.outerTextProvider = CLKSimpleTextProvider(text: "Outer")
    cornerTemplate.innerTextProvider = CLKSimpleTextProvider(text: "Inner")
    let entry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: cornerTemplate)
    handler(entry)
}

我还修改了getLocalizableSampleTemplate()以提供一个示例,但这也不起作用:

func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
    let cornerTemplate = CLKComplicationTemplateGraphicCornerStackText()
    cornerTemplate.outerTextProvider = CLKSimpleTextProvider(text: "Outer")
    cornerTemplate.innerTextProvider = CLKSimpleTextProvider(text: "Inner")
    handler(cornerTemplate)
}

当我在模拟器或手机/手表上运行应用程序,并选择复杂功能作为其中一个图形角时,我希望看到"外部"和"内部"。相反,它为一个显示我的应用程序名称,为另一个显示"---"。
我哪里做错了?

0s7z1bwu

0s7z1bwu1#

这是我的一些代码,目前正在工作:

var graphicCornerComplication: CLKComplicationTimelineEntry? {

        guard #available(watchOSApplicationExtension 5.0, *) else {
            return nil
        }

        let innerTextProvider = CLKSimpleTextProvider(text: "Inner")
        let outerTextProvider = CLKSimpleTextProvider(text: "Outer")

        let template = CLKComplicationTemplateGraphicCornerStackText()
        template.outerTextProvider = outerTextProvider
        template.innerTextProvider = innerTextProvider

        let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
        return timelineEntry

    }

几点考虑:

  • 你已经实现了你的getLocalizableSampleTemplate代码了吗?这应该是你配置复杂功能时要做的第一件事。你应该准备好一些东西,当用户滚动复杂功能插槽并看到你的代码时,它们会立即显示出来。如果你没有,这可能就是为什么你看到的是破折号而不是你想要的文本。
  • 您的复杂功能数据源是否已正确分配?在Targets > Your WatchKit Extension > Complications Configuration > Data Source Class下,确保分配了ComplicationController。
  • 如果您正在使用旧版本的WatchOS,则您的条目可能为零。

EDIT -澄清一下,graphicCornerComplication只是我添加到一些模型中的一个属性,这样我就可以通过调用graphicCornerComplication来快速获得时间轴条目。在使用中,它看起来像这样:

func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
    switch complication.family {
    case .graphicCorner:
        let graphicCornerComplication = dataModel.graphicCornerComplication
        handler(graphicCornerComplication)
    default:
        handler(nil)
    }
}
4szc88ey

4szc88ey2#

以下是对我有效的方法:

  • 使用Cmd+X剪切原始代码。
  • 更改视图的代码,使其仅包含一个简单的Text。
  • 构建并运行并发症。
  • 将原始代码粘贴回去。
  • 重新构建并运行。

相关问题