0

当我只有.ModularLarge.

我想添加.ModularSmall一个选项,所以我尝试用几种不同的方式修改我的代码,但它不再按预期工作。

现在发生的情况是 Time Travel 将适用于从 生成的数组中的第一个条目getTimelineEntriesForComplication,但在执行 Time Travel 时,下一个条目永远不会出现,因此 Complication 只会停留在第一个条目上。

时间线 尝试使用if语句

func getTimelineEntriesForComplication(complication: CLKComplication, afterDate date: NSDate, limit: Int, withHandler handler: (([CLKComplicationTimelineEntry]?) -> Void)) {

    guard let headers = headerArray, texts = body1Array, dates = body2Array else { return }

    var entries = [CLKComplicationTimelineEntry]()
    for (index, header) in headers.enumerate() {
        let text = texts[index]
        let date1 = dates[index]
        let headerTextProvider = CLKSimpleTextProvider(text: header as! String)
        let body1TextProvider = CLKSimpleTextProvider(text: text as! String)
        let timeTextProvider = CLKTimeTextProvider(date: date1 as! NSDate)
        let template = CLKComplicationTemplateModularLargeStandardBody()
        let template2 = CLKComplicationTemplateModularSmallStackText()
        template.headerTextProvider = headerTextProvider
        template.body1TextProvider = body1TextProvider
        template2.line1TextProvider = headerTextProvider
        template2.line2TextProvider = body1TextProvider
        template.body2TextProvider = timeTextProvider

        if complication.family == .ModularLarge {
            let timelineEntry = CLKComplicationTimelineEntry(date: date1 as! NSDate, complicationTemplate: template)
            entries.append(timelineEntry)
            handler(entries)
        }
        if complication.family == .ModularSmall {
            let timelineEntry = CLKComplicationTimelineEntry(date: date1 as! NSDate, complicationTemplate: template2)
            entries.append(timelineEntry)
            handler(entries)
        }
        else {
            handler(nil)
        }
    }
}
4

1 回答 1

1

发生的事情是时间旅行将适用于从 getTimelineEntriesForComplication 生成的数组中的第一个条目,但下一个条目在执行时间旅行时永远不会出现,因此并发症只会停留在第一个条目上。

getTimelineEntriesForComplication您的代码中有一个错误。您返回了一个只有一个条目的数组,因为您for 循环中返回:

for (index, header) in headers.enumerate() {
    if complication.family == .ModularLarge {
        let timelineEntry = CLKComplicationTimelineEntry(date: date1 as! NSDate, complicationTemplate: template)
        entries.append(timelineEntry)
        handler(entries)
    }
}

将您的代码重组为如下所示:

for (index, header) in headers.enumerate() {
    if complication.family == .ModularLarge {
        let timelineEntry = CLKComplicationTimelineEntry(date: date1 as! NSDate, complicationTemplate: template)
        entries.append(timelineEntry)
    }
}
handler(entries)
于 2016-03-25T20:46:50.250 回答