Yalnızca .ModularLarge
cihazım kullanıldığında, Complication and Time Travel mükemmel bir şekilde çalıştı.Çoklu Komplikasyon Aileleri için Zaman Çizelgesi Girişleri
Bir seçenek olarak .ModularSmall
eklemek istedim, bu nedenle kodumu birkaç farklı şekilde değiştirmeyi denedim, ancak artık beklendiği gibi çalışmıyor.
Şimdi ne oluyor? Time Travel, getTimelineEntriesForComplication
'dan üretilen dizideki ilk giriş için çalışacak, ancak Sonraki Yolculuk yaparken sonraki girişler hiçbir zaman görünmeyecek, bu yüzden, Komplikasyon sadece ilk girişte kalıyor. Zaman Çizelgesi
if
deyimi kullanarak çalıştı:
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)
}
}
}
Kod çalışır, ancak sadece ilgili görüşlerinizi merak for döngüsü iç döndü çünkü yalnızca bir giriş içeren bir dizi iade If if ifadesi veya 'case switch' yöntemlerde kullanmak daha iyidir. Ve eğer 'eğer' seçeneğini seçecekseniz, sadece 'if' kullanır mıydınız yoksa 'eğer' kullanır mıydınız? – victorpulak
Şahsen, anahtar ifadesinin okunması ve bakımı daha kolay olduğunu ve bunun için daha fazla kod güvenliği sağladığını düşünüyorum. 'If' blokları ile daha fazla hata olabilir. –