iOS개발하기 #16. 화면전환(2)

오늘의 주제

  • 네비게이션 컨트롤러를 이용한 화면전환 
  • ModalViewController 사용하기 

열 여섯째 시간입니다.^^

정말 오랜만의 포스팅입니다.ㅠㅠ
일단 감격의 눙물을 좀 닦고..ㅠ

요즘 제가 서식지를 좀 옮기기도 했고 이런저런 일들이 많이 겹쳐서 이제서야 짬을내 포스팅을 하네요ㅠㅠ

맥북도 재구매 하였습니다 !

그럼 사설은 여기까지..ㅋㅋ

지난 번에는 addSubview:, removeFromSuperview, setHidden 등을 알아보았습니다.
개념이해는 잘 되셨는지요?
위에 메서드들은 개발문서를 보면 아시겠지만 view를 떼었다 붙였다 없앴다 보였다 하면서 화면을 바꿔줄 수 있는 녀석들입니다.

하지만 이번에는 view controller를 인자로 받아서 처리하는 메서드들을 다뤄봅니다.

물론 개념이 확립되어 계신 분들이라면 view controller자체는 화면에 보이지 않는다는 사실은 알고 계시겠지요? ^^
어찌되었든 화면에는 view controller 안에 속해있는 view가 보이는 것이지요.

이해가 안되시면 이전 포스팅 :
2011/11/15 - [iOS Dev/함께해보기] - iOS개발하기 #7. 화면구조, Cocoa Touch Objects (2) 을 참고하세요

자, 출발해 볼까요?ㅎ

네비게이션 컨트롤러 생성

자 지난번에 사용했던 프로젝트를 그대로 사용 합니다~

일단 두번째 탭의 화면을 네비게이션 컨트롤러 화면으로 바꿔 보겠습니다.

말이 좀 애매하긴 한데요, 일단 해봅시다^^

AppDelegate 구현파일로 가 봅니다.

우린 Second탭의 화면을 네비게이션 화면으로 바꿔주려 하는 것입니다.
아래 코드를 보면 viewController1과 viewController2가 생성되고 탭바 컨트롤러의 viewControllers에 세팅이 되고 있는것을 볼 수 있습니다.
자, 그럼 우리가 바꿔줘야겠죠? 

아래와 같이 코드를 살짝 바꿔줘 봅니다.
우리는 네비게이션 컨트롤러 myNaviViewController를 생성해서 viewController를 rootViewController로 설정하여 초기화 했습니다.
그 후에 viewController2대신에 탭바컨트롤러의 뷰컨트롤러에 넣어줍니다. 

실행서 보면 짜잔~~
네비게이션 컨트롤러가 대신 들어갔습니다.
어떻게 아냐구요? 파란 막대가 생겼죠?
근데 이게 네비게이션 컨트롤러가 생긴거라고는 확신할 수는 없어요.
그럼 네비게이션 컨트롤러의 동작을 확인해보면 확신할 수 있겠네요?
네~ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

push, pop viewcontroller 그리고 modal viewcontroller

자, 그럼 이제 동작을 하게 만들어 봅니다.
일단 SecondViewController.xib에 버튼 두 개를 올려놓고 이름을 이쁘게 넣어줍니다~

자, 그럼 버튼에 연결될 메서드를 생성해 줘야 하는데요, 저번에 소개해 드린바와 같이 이렇게도 생성이 가능합니다.
버튼에서부터 헤더파일의 interface내부에 오른쪽버튼(또는 컨트롤키)를 누른상태로 드래그 앤 드랍!!
그리고 Connection은 Action으로 해주시고, 이름은 이쁘게^^ 지금은 너무나 간단한 기능을 구현할 것이기 때문에 Arguments는 None으로 해줍니다. (Argument에 대한 자세한 설명은 다음에...^^)

헤더 파일에 보면 이렇게 이쁘게 정의되어있는 것을 확인할 수 있습니다.

게다가 구현파일에 와서 보면 거기에도 이쁘게 메서드가 만들어져 있습니다 ㅎㅎㅎ 아이 좋아~

그 속 안을 알차게 채워넣어 봅시다~^^

pushButtonClick메서드 안에는 임시 뷰 컨트롤러 하나를 생성해서 검은색 배경으로 설정을 해주어서 pushViewController 메서드를 실행합니다.
여기서 [self navigationController]는 이 SecondViewController를 컨트롤 해주는 네비게이션 컨트롤러를 뜻합니다.(우리 아까 AppDelegate에서 만들어 주었었죠?) 그녀석에서 새로운 뷰 컨트롤러를 집어넣겠다고 말해주는 겁니다. 

modalButtonClick메서드 안에는 네비게이션 컨트롤러를 이용한 것이 아닌 모달 뷰를 이용한 화면전환을 구현합니다.
모달 뷰가 뭐냐구요? 백이면 백 그냥 이따 실행해 보시면, 아~~~ 이거~~~ 하십니다.ㅋㅋㅋ
여기서는 약간 다른것이 아래 버튼을 코드로 구현해 놓은 부분인데요... 제가 뷰 컨트롤러 xib파일 하나를 더 만들기 귀찮아서 그런건 절대절대 아니구요..ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
그냥 버튼을 코드로 넣게되면 이렇게 넣는구나~~~ 그냥 한번 보시라고 넣어보았습니다. 암~ 그럼요~ 한번 쓰고 버릴 뷰 컨트롤러 xib파일 만들기 귀찮아서 그런거 절대 아녜요 ㅋㅋㅋ
여하튼 
presentModalViewController: animated: 메서드를 사용하여 모달뷰를 화면에 올릴 수 있습니다.
아래 버튼구현부에서 addTarget을 보시면 @selector안에 dismissModalViewControllerAnimated: 메서드가 들어가 있는 것을 보실 수 있습니다.
메서드 이름만 봐도 아, 이게 뭐구나 눈치 채셨길 빕니다. ㅋㅋㅋ

그럼 실행해 봅시다~

Modal 버튼을 눌렀을 때 Modal이 올라온 상태입니다.

Push버튼을 누르면 네비게이션 컨트롤러가 tempViewController 인스턴스 하나를 화면에 push합니다.
상단에 Second버튼은 Second 화면으로 pop 한다는 뜻이겠지요?ㅎ
화면을 push하면 pop해서 다시 뒤로 갈 수 있는 것입니다.
 

오늘 포스팅은 제가 쓰고도 뭐라고 횡설수설 했는지 모르겠습니다...

정말 정신없이 썼네요.

피곤해 죽겠어요ㅠㅠ

여튼 요거 개념 잘 해두시면 유용하실 거에요~

궁금한 것은 댓글 남겨주세요^^ 

어쩌면 생각보다 빨리 답변이 올라올지도 모르잖아요?ㅎㅎ

by yagom


p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   

댓글 남기기

Close