티스토리 뷰
[Fix] 앱이 백그라운드에 없을 때 공유 기능이 제대로 작동하지 않는 버그 · Issue #363 · DeveloperAcade
버그 설명 백그라운드에서 ShortcutsZip이 존재하지 않는 상태에서 공유링크를 클릭하면 비어있는 모달이 출력됩니다. 접근 단계 백그라운드에 있는 ShortcutsZip을 종료해주세요 공유받은 링크를 실
github.com
우선 결론만 먼저 말하자면, @State의 고질적인 문제인 것으로 밝혀졌다!
모달의 drawing cycle이 좀 다른가 싶었는데 아니었다 ㅠ
해결하려면 전송하려는 데이터를 @State말고 @Binding으로 표현해야한다.
다른 사람 코드
https://stackoverflow.com/questions/64798211/swiftui-sheet-cannot-show-correct-values-in-first-time
https://medium.com/swlh/swiftui-sheets-navigation-bars-and-broken-states-312014ed1a3e
이런식으로 전달하고자하는 데이터를 item에 Binding으로 전달해주거나, ObservableObject를 통해 문제를 해결할 수 있다.
첫 번째 이슈 - 바인딩으로 바꿀 수 없어..!
하지만 우리 프로젝트는 구조상 Binding으로 바꾸는것은 진짜! 대공사였다. (그래서 데이터를 Binding으로 받는 똑같은 뷰를 하나 더 만드는게 적절하다고 판단했음. 같은 코드 절대 못 참아~!)
그래서 Sheet 말고 Navigation으로 보여주는건 어떤지 팀원들한테 물어봤다 -> 다행히 받아들여짐!
받은 딥링크 데이터를 Navigation Path에 넣는 방식으로 구현했다.
두 번째 이슈 - 여러개의 navigation path
탭뷰를 사용하고 있어서 총 3개의 path를 관리하고 있다. 그래서 무조건 첫 번째 탭에 정보를 Append하면, 다음과 같은 문제가 발생한다.
사용자가 두번째 탭에서 앱을 백그라운드로 돌린 상황이다. 여기서 사용자가 링크를 클릭했다고 생각하자.
그러면 사용자가 앱을 다시 켰을 땐 두번째 탭에 있을 것이다. 그런데 새로운 데이터는 첫번째 탭에 대한 path에 append되었다. 그래서 아무런 반응이 일어나지 않는다.
사용자가 첫번재 탭에 입장하고 나서야 그 링크가 실행되는 아주 이상한 현상이 발생하게 된다!!
숏컷집의 경우, 사용자가 최근에 이동한 탭이 App Storage에 저장된다. 이를 활용해서 switch 문을 사용하게 되었다.
또한 같은 코드를 두 번 사용하는 것을 피하기 위해 제네릭을 이용한 함수를 구현하게 되었다!
[Fix] 앱이 백그라운드에 없을 때, 비어있는 모달이 출력되는 문제 by JIWON1923 · Pull Request #379 · Deve
관련 이슈 closes #363 구현/변경 사항 sheet의 고질적인 문제여서 Navigation으로 변경하여 문제를 해결하였습니다. 스크린샷 Simulator.Screen.Recording.-.iPhone.14.Pro.-.2023-01-24.at.01.16.04.mov To R...
github.com
- Total
- Today
- Yesterday
- 이것이 코딩테스트다
- Code up
- do while
- ord
- 레플릿
- for문
- Swift
- 프로그래머스
- replit
- 깃허브
- 시간초과
- level1
- 리플릿
- 반복문
- SwiftUI
- 백준
- 코드업
- 깃
- baekjoon
- 부르트포스
- 16진수 입력
- 설명
- CHR
- 코드 업
- python
- 기초 100제
- 파이썬
- CodeUp
- 정답
- COMMIT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |