티스토리 뷰

iOS widget을 구현한 지는 꽤 되었는데 변경 사항을 바로바로 업데이트 해주는 법을 몰라 

for hourOffset in 0 ..< 5 {
            let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)!
            let entry = SimpleEntry(date: entryDate)
            entries.append(entry)
        }

해당 코드에서 hourOffset 범위를 0 ..< 2 이런 식으로 최대한 줄이거나 byAdding: .hour를 .second 이나 .minute로 바꿔 임시방편으로 코드를 짰는데 정말 바보 같은 짓이었다.

 

해결 방법은 위젯을 업데이트하고싶은 VC에서 widgetKit을 import하고 원하는 시점에

WidgetCenter.shared.reloadAllTimelines()

를 추가해주면 된다. 참고로 해당 위젯은 iOS 14 버전부터 사용이 가능하기에

if #available(iOS 14.0, *) {
            WidgetCenter.shared.reloadAllTimelines()
        } else {
        }

if문을 사용하여 옵셔널 처리를 해주면 된다. (해당 앱 타겟이 14버전 이상이면 그대로 쓰면 된다.)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함