스토리 보드 구조
Story Board는 위와같이 세가지 정도로 구성되어있으며, 각 scene들은 View Controller들 이다.(이전버전의 xib라고 생각하면 편할 듯) 그리고 이것들을 서로 이어주고 있는것이 segue(세그웨이 라고 읽음)라고 한다.
1. 초기 화면
프로젝트를 생성하면 다음과 같이 scene이 하나인 스토리 보드가 생성된다. 이때 다음 scene을 만들고 싶으면 storyboard으 빈공간에 View Controller를 끌어다 놓으면 된다.
이렇게 끌어다 놓으면 scene은 추가가 되지만 서로 연결이 되어있지 않기 때문에(segue를 생성하지 않았기 때문에) 서로 연결 시켜주는 작업을 하면 된다.
2. scene들의 연결
위 그림과 같이 좌측의 scene에 버튼을 하나 만들고 버튼을 마우스 오른쪽 클릭을 누른 상태에서 오른쪽이 scene로 옮기면 아래와 같은 팝업 창이 뜨게 된다.
세그웨이 연결 방식에 따라 push(navigation bar사용시), modal, custom이 다음 scene으로 넘어가기 위해 modal을 선택한다.
이렇게 선택을 하면 세그웨이가 생성된 것을 확인 할 수 있다.
3. 새로 생성한 scene(오른쪽 화면)과 View Controller 클래스 파일을 생성하고 새로 생성한 파일과 연결한다.
이때 "With XI for user interface"에 체크를 해제한후 클래스를 생성해 준다.
그리고 storyboard의 오른쪽(두번째) scene의 View Controller를 클릭 후 inspector창에서 새로 만든 SecondViewController를 지정해 준다.
이제 설정부분은 다 끝났다.
두번째에 꾸미고자하는 UI들을 올려 놓고 IBOutlet으로 연결한다. 이번에는 간단하게 UILabel만 올려보고 첫번째 scene에서 두번째 scene으로 문자열을 넘겨주어 두번째 scene의 Label에 적용하도록 해보자.
다음과 같이 구성하고 UILabel이름은 secondLabel로 버튼 클릭시는 closeModal이란 method로 각각 연결 시켜 놓았다.
5. 두 scene들을 연결하는 세그웨이의 아이디를 지정한다. 이 아이디를 통해 세그웨이를 가져오고, 가져온 세그웨이를 통해 세그웨이와 연결된 View Controller를 가져올 수 있기 때문에 세그웨이 아이디를 지정한다.
세그웨이 지정은 세그웨이를 선택한 후 inspector창에 identifier에 아이디를 지정해 주면 된다.
맨 처음에 첫번째 scene에 show next라는 버튼을 만들고 다음 scene에 연결해 두었음으로 따로 버튼 액션을 등록할 필요는 없다. 대신 이 버튼이 클릭 될때(페이지 전환이 일어날때) 다음과 같은 메소드가 실행 되는데 이 메소드를 통해 다음 scene으로 전달하고 싶은 데이터 라든가 각종 처리를 해주면 된다.
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender; |
6. 해당 method를 구현한다.
그후 SecondViewController의 viewWillApear method에서 해당 msg를 Label에 넣어주면 작업은 끝난다
그리고 마지막으로 닫기 버튼이 눌렸을때 modal창을 없애는 dismissModalViewControllerAnimated를 실행한다.