Meine Komplikation und Zeitreise funktionierte perfekt, als ich nur .ModularLarge
hatte.Zeitleisteneinträge für mehrere Komplikationsfamilien
Ich wollte .ModularSmall
als eine Option hinzufügen, also habe ich versucht, meinen Code ein paar verschiedene Möglichkeiten zu ändern, aber es funktioniert nicht mehr wie erwartet.
Was jetzt passiert, ist, dass Zeitreise für den ersten Eintrag im Array von getTimelineEntriesForComplication
funktioniert, aber die nächsten Einträge erscheinen nie bei der Zeitreise, so dass die Komplikation nur auf dem ersten Eintrag bleibt.
Timelineversucht, mit if
Anweisung:
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)
}
}
}
-Code funktioniert, aber nur Ihre Meinung fragen, auf Wenn 'if' Statement oder' Case Switch' ist besser in den Methoden zu verwenden. Und wenn du 'if' wählen würdest, würdest du nur' if' verwenden oder würdest du 'if else' verwenden? – victorpulak
Persönlich denke ich, dass die switch-Anweisung einfacher zu lesen und zu warten ist und mehr Code-Sicherheit eingebaut hat. Mit 'else if'-Blöcken könnten weitere Fehler auftreten. –