You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
일부 기능만 다르고 다른 UI디자인이 모두 동일한 뷰를 하나의 뷰로 할지 두개의 뷰로 나눠서 만들지를 고민 해봤습니다.
하나의 뷰에서 다른 기능 적인 부분만 분기 처리를 하여 만들게 되면 코드적으로 대응이 쉽고 디자인의 변경이 있더라도 한번에 적용할 수 있다는 장점이 있습니다. 여기서 단점은 만약에 디자인 요소가 처음의 방향과 다르게 수정과 추가 화면에서 다르게 적용이 된다면 대응하기 힘들다는 단점이 있습니다.
두개의 뷰로 만들어서 진행 할 경우에는 두개의 뷰에 대해 각각 다른 방향으로 디자인 변경이 이루어질경우에는 쉽게 대응할 수 있지만 같은 방향으로 변경이 되는 경우에는 같은 로직을 두번씩 써줘야 하는 번거로움이 있습니다.
여기서는 하나의 뷰에서 분기를 처리하는 것보다 두개의 뷰로 만들어서 관리하는게 더 깔끔한 코드가 될 것이라고 판단하여 두개를 뷰를 선택했습니다.
🏀 트러블슈팅
T1. XCode 버전에 따른 시뮬레이터 프로젝트 터짐 현상
오류상황.gif
오류상황.png
에러메세지(iOS16.0)
에러메세지(iOS15.5)
문제
프로젝트 중간에 iOS와 MacOS, Xcode의 업데이트가 있었습니다. 저희 중 한명만 Xcode 14.0으로 업데이트를 하게 되면서 시뮬레이터의 iOS버전이 16.0으로 올라가게 되면서 기존 타겟팅이던 15.5에서는 일어나지 않던 오류가 발생했습니다. ProjectMainView에서 Popover를 통해 선택된 리스트의 내부의 뷰를 이동시키게 되었는데 다른 뷰로 보냈다가 다시 돌아오면 앱이 종료되는 현상이 발생했습니다.
해결
처음에는 업데이트된 엑스코드의 버전 차이로 인한 문제라고 생각했습니다. 하지만 리뷰어의 첨언 덕분에 저희 코드에서 popover를 하기 위해 만들었던 state프로퍼티인 isPopover를 onLongPressGesture를 이용해 true로 바꿔 준 다음 다시 false로 만들어주는 로직을 넣지 않았기 때문에 뷰의 state가 true인 곳으로 projectView를 이동시켰을 때 뷰가 들어가기도 전에 View에서 Popover를 띄우는 상태가 true이기 때문에 Popover를 띄워줘야 하는데 이 때 어디에 띄워야 하는지를 찾지 못해서 이런 에러가 발생을 했다고 판단을 했습니다.
그래서 해결방법으로 Popover에서 눌려지는 버튼 내에 isPopover를 false로 만들어주는 로직을 추가 했습니다.