앱개발에 앞서 스토리보드로 이때까지 쉽게 UI Object들을 구현해왔다.
이제 팀 프로젝트가 시작이 되면서 스토리보드로 작업하고 해당 작업본으로 협업을 수행해야하는데, merge-conflict를 방지 및 해결하기 위해 Storyboard Reference를 정리해보고자 한다.
Storyboard Reference
프로젝트가 커지고 협업하는 인원이 많아지게 되면, 스토리보드는 아래와 같은 문제점을 발생시킨다.
이러한 문제를 해결하기 위해서는 100% 코드로만 작업을 하거나 하나의 Storyboard 당 하나의 ViewController를 만드는 방법이 있다.
우리 팀은 앱 기획 시 Tab bar를 이용해서 각 컨텐츠 들을 보여주려고 하였고, 그에 따라 5개의 페이지를 작업해야 한다.
아래와 같이 화면이 기획되어야 하는 모든 페이지별로 스토리보드를 작업하고 해당 스토리보드에 작업될 코드를 별도의 ViewController로 따로 만들었다.
해당 스토리보드들을 연결하는 작업은 Storyboard Reference를 이용하면 간단하게 작업이 가능하다.
단, 주의해야 할 점은 Storyboard ID와 Reference ID를 똑같이 기입해줘야 한다는 것이다. 우리는 헷갈림을 방지하기 위해 모든 명칭을 통일했다.(스토리보드명 = 뷰컨트롤러명 = ID)
스토리보드를 만들고 이름을 SearchViewController로 작성했고, Custom Class명과 Storyboard ID를 동일하게 작성해준다.
그리고 메인 스토리보드로 가서 Storyboard Reference를 추가해준다. 해당 레퍼런스에도 Referenced ID를 동일하게 작성해준다.
이때 Identify의 Storyboard ID가 아니므로 유의해서 작성해야한다.
그러면 아주 간단하게 스토리보드들이 연결이 잘되는 모습을 볼 수 있다.
아 그리고, 테스트 할 때 스토리보드에 수정을 하면 파일명 우측에 M이라고 뜰 텐데 이거 없애주지 않으면 PR시 문제가 될 수 있다.
일단 나는 작성한걸 다 지우고 저장하니까 없어져서 그렇게 처리했는데, 만약에 돌이킬 수 없는 실수를 저질렀다면 커밋할 때 본인 담당의 뷰컨과 스토리보드만 커밋하길 바란다.(또는 커밋 시 해당 파일 목록에서 삭제 후 discard changes를 클릭하면, 수정 이전의 코드로 돌아간다.)
앞으로 얼마나 많은 충돌이 생길지 기대되고, 일단 기획할 때 모델도 다 나눴으니까 충돌이 없을지도.... 라는 기대를 가져본다.