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

# 오늘의 주제

1. 네비게이션 아이템 커스터마이징   

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

지난 번에는 네비게이션 컨트롤러 사용방법을 알아보았습니다.
조금 이해는 되시나요?
잘 이해는 안되시더라도, 조금씩 조금씩 따라오다 보면 언제쯤엔가 약간 감이 잡히실 거예요 ㅎㅎㅎ
사실 원론적인 이야기들을 쫘악 펼쳐놓고 첨부터 이게 뭐다 저게 뭐다 하기 보다는 이게 더 나을것 같아서요.
깊게 들어가면 잘 못따라 올지도 몰라요..ㅎㅎ
흥미도 훅 떨어지구요 ㅎㅎㅎ
궁금한 사항들이 있으면 댓글 남겨주시면 최대한 상세하게 알려드리도록 하겠습니다 ㅎ

자 그럼 오늘은 네비게이션 아이템들을 약간 커스터마이징 해보죠^^
스따뚜~~~~~~~~~~~~

## 네비게이션 아이템이란?

네비게이션 아이템이란 개발문서에서 살펴보면 
The UINavigationItem class encapsulates information about a navigation item pushed on a UINavigationBar object’s stack. A navigation bar is a control used to navigate hierarchical content. A UINavigationItem specifies what is displayed on the navigation bar when it is the top item and also how it is represented when it is the back item.
이라고 나오는데요 ㅋㅋㅋ

뭐, 대충 훑어 보면 네비게이션바 객체의 스택에 쌓인 네비게이션 아이템에 대한 정보?? 아... 발해석 죄송합니다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 대충 감은 오는데 한국말로 어떻게 이쁘게 바꾸는지를 모르겠네요 ㅋㅋㅋ 

여튼 네비게이션바에 있는 구성요소들을 이야기 하는거예요 ㅎㅎㅎ

## 네비게이션 아이템 커스터마이징

한 번 바꿔 봅시다요~

일단 FirstViewController.m 으로 이동!
빨간 네모를 따라 작성해 봅시다 ㅎ

initWithNibName 메서드는 초기화 메서드라고 말씀드렸죠?
self.navigationItem.title = @"The First View";
라고 쓴 것은
self 즉 자신(FirstViewController 인스턴스)의 navigationItem중에 title을 The First View로 바꾸겠다는 말이 되겠습니다 ㅎㅎ
즉, 이 객체 인스턴스를 초기화 할 때 네비게이션아이템 타이틀을 설정한다는 말이 되겠습니다.

자, 마찬가지로 SecondViewController도 설정해 봅시다 ㅎ

이제 AppDelegate로 와서!
[[UIBarButtonItem appearance] setTintColor:[UIColor blackColor]];
라고 입력해 봅시다.
이 코드는 이 애플리케이션의 모든 UIBarButtonItem의 모습 중에 틴트컬러를 검은색으로 바꿔주겠다는 말입니다.
즉, 네비게이션바의 버튼이든 툴바에 있는 버튼이든 간에 바 버튼들의 색상을 검정으로 바꾸겠다 이말입니다.
다른 녀석들에도 응용이 가능하구요^^
물론 원하는 곳에서 개별적으로도 변화시켜 줄 수 있습니다. 그건 저쪼아래 해볼거예요 ㅎㅎ
또 아래 코드는 우리가 만들어준 네비게이션의 바 색상을 변경해 주는 코드입니다. 이녀석도 검정을 해 봅니다 🙂
잘 모르시겠죠?ㅋㅋㅋ 실행해 보시면 감이 오실거예요~

실행 결과 화면입니다 ㅎㅎ

어..? 상단 바의 색상이 검정으로 바뀌었어요 ㅎㅎㅎ 그리고 타이틀도 The First View로 변경이 되었네요!!

SecondViewController도 마찬가지네요^^

그런데 왠지 저기 위에 뒤로가기 버튼의 이름이 너무 길어서 보기 싫어요...ㅋㅋㅋ 저 뒤로가기 버튼은 기본적으로 전 화면의 뷰컨트롤러의 네비게이션 아이템의 타이틀로 세팅이 됩니다. 그런데 우리가 이름을 좀 바꿔줘 봅시다 ㅎㅎ

아래 네모 박스의 코드를 FirstViewController.m에 입력해 줍니다.
분명히 이 버튼은 SecondViewController에서 보여지는데 왜 여기서 입력해 주냐구요?
그냥... 그 버튼은 이 FirstViewController를 가리키는 녀석이니까 여기서 설정해 주는것도 이상하지는 않죠?ㅎ
SecondViewController에 집어 넣으면 그 다음 화면에서 보입니다...^^
여기서 alloc이 뭐고 release가 뭐고... 궁금하시죠?ㅎ 좀 나중에 알아보도록 해요~

실행 결과입니다 ㅎㅎㅎ 버튼이 내가 원하는 이름으로 변경되었네요^^

자, 그런데 우리가 아까 위에서 이 애플리케이션의 바 버튼 아이템들의 색상을 모두 검정으로 바꾸어 주었었죠? 그래서 위의 버튼들도 검은색으로 나오구요 ㅎㅎㅎ
근데 왠지 이녀석 만큼은 파란색으로 바꿔주고 싶어요 ㅎㅎㅎ
바꿔줘 봅시다.

짜잔~ 파란색으로 바뀌었네요 ㅎㅎㅎ
좀 더 이쁜 색으로 바꿔 줄 수 있는 방법은 나중에 얘기해 보도록 해요.ㅎ
아니면 개발문서에서 UIColor에 대해서 알아보셔도 좋을 것 같아요^^

자.. 이렇게 또 하나 해 보았네요~

그런데 코드를 보면서 의아해 하시는 부분이 생길 수 있어요

어떤 속성값(property)에는 self.navigationItem.title = @"title" 처럼 점으로 구분해서 들어가구요.

어떤 속성값은 [[self navigationItem] setTitle :@"title"]; 식으로 설정하기도 하니깐요...ㅎㅎ

그러나 결론은 !! 같다! 입니다^^

원래 Objective-C에서의 정석은 두 번째 방법처럼 [ ]를 사용하여 getter, setter 메서드를 이용하는 것이 정석이지만, C++등 다른 프로그래밍 언어의 프로그래밍에 익숙해 있는 개발자들은 .을 사용하여 코딩하는데에 훨씬 익숙하거든요^^ 그래서 이렇게도 쓰고 저렇게도 쓰는 것입니다.

둘 중 뭐가 더 편하다 불편하다는 자기 판단이고 자기 몫입니다.^^

후우... 대충 감이 오시나요? getter, setter등의 얘기는 좀 더 깊숙한 얘기니까 나중에 차근차근 알아보도록 해요^^

그럼 오늘은 여기까지! 다음에 또 보아요 ㅎㅎ

by yagom

---

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

RSS Feed 받기   

댓글 남기기

Close