본문 바로가기

iOS Dev/함께해보기

iOS개발하기 #12. Navigation Controller(1). 네비게이션 컨트롤러(1)


오늘의 주제

1. 네비게이션 컨트롤러 사용해 보기 


열 두번째 시간입니다.^^

지난 번에는 개발지식의 보고 개발문서를 알아보았습니다.
한 번 쭈욱 둘러보셨는지요?
정말 중요한 것이니 몇 번을 보고, 다른 싸이트를 검색하고, 직접 계속 둘러보면서 꼭 몸으로 익히도록 하세요~!

자 그럼 오늘은 네비게이션 컨트롤러를 사용하여 화면 전환을 해 보도록 하겠습니다^^
스따뚜~~~~~~~~~~~~


# 네비게이션 컨트롤러란?


네비게이션 컨트롤러는 차에 달려있는 네비게이션이 아니구요...ㅎㅎ
아이폰 설정창에 들어가서 각각 셀을 누르면 다른 화면으로 스윽 밀려 들어가지요?
그리고 back버튼을 누르면 다시 돌아오구요...ㅎ
이게 바로 네비게이션 컨트롤러가 하는 일입니다~!

# 네비게이션 컨트롤러 붙여보기

뭐... 일단 실습 해 보도록 하죠 뭐 ㅎㅎㅎ
계속 사용중이던 프로젝트를 꺼내 봅시다~
MyFirstTabbedApp 아시죠?ㅋㅋㅋ
FirstViewController.h 파일로 가 봅시다.
커스텀 메소드를 만드는 것이 지금 하는 것보다 약간 더 간편한 방법도 있지만, 그거는 미리 캡쳐를 못했네요...ㅎㅎ
그건 요거 좀 알게 되면 추후에 알려드릴게요^^
무슨말인지 잘 모르시겠다구요? 일단 따라와 보세요 ㅋㅋ 시작합니다~
빨간 네모 따라오시면 돼요~


헤더파일 (***.h)에 작성 끝내셨으면 이제 구현파일 (***.m)으로 갑니다.
헤더파일이 뭐고 구현파일이 뭐냐구요?
음... 책으로 비유해 봅시다.ㅎ
책 첫장에 목차랑 서문이 있고 뒤에 가면 본문과 내용이 있죠?
헤더파일은 목차랑 서문이라고 생각하시고 구현파일은 본문이라고 생각합시다.
헤더에서 이 클래스는 어떤어떤 기능을 한다. 어떠어떠한 메소드와 어떤 변수들이 있다.. 라고 써놓고, 구현파일에 와서 그에 대한 상세한 기술을 하는 거예요. 대충 감이 오시나요?ㅎㅎ

자, 구현파일에도 요대로 써 봅시다~
네비게이션 컨트롤러에서 다음 화면으로 넘어갈 때는 뷰 컨트롤러를 푸쉬 해 줍니다. 반대로 나올때는 팝 합니다.
이는 메모리를 생각해 보면 알 수 있는 용어인데요, 메모리 안에다가 새로운 어떤 녀석을 집어 넣어줘야 하니까 메모리 안으로 푸쉬 해주고~
필요없어져서 빼버릴땐 메모리에서 팝! 하고 꺼내는거죠 ㅋㅋㅋ
그래서 지금 밑에 보시면 pushViewController 가 보이시죠?
Objective-C는 이렇게 메소드명이 실제언어와 흡사하고 직관적인 것이 특징이자 매력입니다.ㅎㅎㅎ 메소드 이름만 봐도 대충 뭐하는 놈인지 감이 오잖아요 ㅎㅎㅎ


자, 일단 여기로 오기 전에 헤더파일과 구현파일을 미리 저장 해 줍시다. 헤더파일에서도 커맨드+s로 저장해 주시고, 구현파일에서도 커맨드+s로 저장 해 줍시다.
자 그리고 이제 xib파일로 와 봅시다.
그리고 Round Rect Button 하나를 쭈욱 끌어와서 넣어주구요~
이쁘게 위치도 잡아주고, Title을 달아줍니다 ㅎㅎ Title은 사실 넣어줘도 안넣어줘도 그만~ㅋㅋㅋ


자 이제 아래 그림에서 보듯이 버튼을 마우스 오른쪽 클릭하면서 File's Owner로 쭈욱 끌어당겨서 파란색으로 표시가 되면 놓아줍니다.
혹은 컨트롤키를 누른 상태로 마우스 왼쪽 버튼을 누른 상태로 드래그 앤 드롭 해 주셔도 됩니다.
그러고 나서 검은색 선택 박스가 나오면 잘 하신겁니다. 또 아래그림 참조 하세요^^


이런 검은색 박스가 새초롬 하게 뜨면 성공하신 겁니다. 물론 처음 연결하면 앞에 동그라미는 안생겨 있어요^^
자 그럼 이제 우리가 미리 헤더파일에 선언해 주었던 메소드 goToSecondViewController를 클릭해 줍니다!!
그럼 어디선가 파란것이 반짝반짝 할거예요~ㅎㅎㅎ
혹시 모르니깐 다시 한 번 해 보세요. 요 밑에서처럼 동그라미로 체크가 되어있는지. 그럼 잘 연결이 된 거예요~


우리는 지금 FirstViewController에 버튼을 하나 추가하고 네비게이션 컨트롤러 관련 메소드를 추가해 준겁니다. 그러니깐 FirstViewController의 인스턴스가 네비게이션 컨트롤러 안에서 작동하게 해야 합니다.
잘 이해가 안가시죠?ㅎㅎ
네비게이션 컨트롤러는 한 개 또는 복수 개의 뷰 컨트롤러 들을 자신이 컨트롤 하는 방식입니다.
자신의 실체는 없지만 그 뷰 컨트롤러들을 넣었다 뺏다 할 수 있는 녀석이죠...
지금 당장은 잘 이해가 안가지만 일단 한 번 오늘거를 만들어 봅시다.
궁금증이 폭발하시는 분은 개발문서에서 UINavigationController와 그에 관련된 것들을 쭈욱 읽어보시는 것도 좋을 것 같네요^^

자, 그럼 이제 마지막 관문~
AppDelegate.m으로 옵니다.
FirstViewController의 인스턴스가 네비게이션 컨트롤러 안으로 들어가야 한다고 했죠? (인스턴스 이해 안가시면 앞에가서 다시 읽고오세요...ㅎ)
그러기 위해서는 새로운 네비게이션 컨트롤러를 하나 만들어 줍니다.(위의 빨간네모) 생성할 때 보면 initWithRootViewController 라는 곳 안에 viewController1이 들어가죠? init이라는 것은 초기화 한다는 것인데, 지금 새로 생성하는 네비게이션 컨트롤러의 최 상단 뷰컨트롤러가 viewController1인 네비게이션 컨트롤러로 초기화 하겠다. 라는 뜻으로 해석 되시나요?ㅎ
참고로 viewController1은 FirstViewController의 인스턴스입니다.

그리고 나서는 탭바컨트롤러에 원래 viewController1, viewController2, viewController3를 넣었었는데, firstViewNavi, viewController2, viewController3를 넣어줘 봅시다.


자! 그리고 이제 드디어 대망의 실행타임~~~~~~~~~~
커맨드+R로 실행해 봅니다 ㅎㅎㅎ


네비게이션 잘 동작하시나요?ㅎㅎㅎ
버튼 누르면 SecondView가 나오죠?
그리고 뒤로가기 버튼을 누르면 다시 돌아오구요 ㅎㅎㅎ


그리고 탭바도 이상없이 잘 동작합니다~
세번째로 갔다가 다시 첫번째로 돌아와도 네비게이션은 아직 잘 동작하고 있습니다 ㅎㅎㅎ 


후아~~~~~~~~~~~~~

네비게이션으로 화면 움직이기 한 번 해봤는데요, 어떠신가요?

아직 답답하고 99% 부족해 보이고 무슨말인지도 잘 모르겠고, 왜 이걸 하고 앉아있는지도 잘 모르실거예요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

그 기분 잘 알아요~ 하지만, 이건 정말 조금 후를 위한 준비과정이니까 조금만 따라와 주세요~

얼마 지나지 않아 요령껏 잘 하고 있는 자신의 모습을 보게 되실테니까요 ㅋㅋㅋ

그럼 저는 다음에 또 알찬 정보를 가지고 돌아오겠습니다~~

뿅!!


by yagom

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

RSS Feed 받기  
 


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? ^~^ 사랑합니다~ ↓↓↓