5

我使用 Xcode 的“带有 Watchkit 应用程序的 iOS 应用程序”模板创建了一个应用程序,进入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)
}

当我在模拟器或手机/手表上运行应用程序并选择复杂功能作为图形角之一时,我希望看到“外部”和“内部”。相反,它会为一个显示我的应用程序的名称,而另一个则显示“---”。

我究竟做错了什么?

4

1 回答 1

1

这是我目前正在运行的一些代码:

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,您的条目可能会为零。

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

func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
    switch complication.family {
    case .graphicCorner:
        let graphicCornerComplication = dataModel.graphicCornerComplication
        handler(graphicCornerComplication)
    default:
        handler(nil)
    }
}
于 2019-04-23T18:44:37.370 回答