iOS개발하기 #17. 맵뷰

# 오늘의 주제

1. 맵뷰 띄우기

열 일곱번째 시간입니다.^^

지난 번까지는 화면 전환 기법 몇 가지를 알아보았습니다.
화면 전환은 상황과 때에 맞게 그리고 사용자의 요구에 맞게 적절하게 사용하면 되겠습니다~^^

자 그럼 오늘은 지도(구글 맵)을 한 번 띄워보도록 하지요~
출발~~~~~~~~~~~~

## MKMapView

긴 말 필요 없습니다 ㅋㅋㅋ 바로 실습 들어갑니다.
당연히 지난번 까지 쓰던 프로젝트 그대로 사용합니다~

새로운 뷰 컨트롤러 생성을 위하여 Root폴더에서 우클릭(또는 컨트롤+클릭) 하여 New File...을 선택!

UIViewController Subclass를 선택하고 Next!
아... 이제 다음부터는 이거 캡쳐 안해야지... ㅋㅋㅋㅋㅋㅋㅋㅋ 

이름을 MyMapViewController라고 해줍니다. 체크박스와 Subclass of를 잘 확인하세요~

자 뷰 컨트롤러가 생성되었으면 MyMapViewController.xib파일을 엽니다.

View위에 Map View를 끌어다 놓습니다. 자동으로 화면 전체에 들어갈거예요~

그 위에 버튼 세개를 살포시 얹어줍니다. 그리고 속성창에 들어가서 Alpha 값을 0.5로 설정해 줍니다~

그 후에 이제 SecondViewController.m으로 갑니다. 우리는 이 MyMapViewController를 SecondViewController에서 Modal View로 띄울 생각이거든요^^
자, SecondViewController.m으로 와서 새로 만든 MyMapViewController를 import해줍니다.

그 후에 아래로 내려와서 지난번에 만들어 놓았던 modalButtonClick메서드를 수정해 줍니다.

그리고 나서 실행을 해 봅니다~
짠! 잘 되시나요?ㅋㅋㅋ

안ㅋ돼ㅋ요ㅋ

빌드에서 에러도 없는데 왜 안될까요 도대체 ㅠㅠㅠ
자... 그럼 우리가 새로 추가한 녀석이 누군가 떠올려 봅시다.
우리가 처음 써보는건 분명히 Map View네요^^

개발문서에서 MapView에 관해 검색해 보았습니다.
Map View의 클래스 이름은 MKMapView입니다.

자... 개발문서에서 Class Reference를 보시면 사용하는 Framework와 사용가능한 버전, 그리고 선언되어있는 헤더가 나오네요~
MapKit.framework와 MKMapView.h 등을 데려와야 하겠군요~

자, 프로젝트를 클릭하고 아래와 같은 곳에 Linked Frameworks and Libraries가 있네요~
말그대로 링크된 프레임워크와 라이브러리가 있어요~
우린 지금 MapKit프레임워크를 추가해야 하므로 +버튼을 눌러줍니다~

MapKit.framework를 Add해줍니다~

자, 이렇게 추가 했으면 잘 실행이 될거예요~

그런데 맵에서 닫기버튼이 동작을 안하면 모달뷰를 닫을 수가 없죠~
이제 버튼 동작을 만들어 봅시다~^^
자, 이거 다 어떻게 하는지 아시죠??
모르면 이 아래 캡쳐에서 오른쪽 위에 Editor가 어떻게 되어있는지 확인해보시구요~
아래 빨간 화살표는, 버튼을 오른쪽버튼 또는 컨트롤 클릭해서 끌어오라는 말씀입니다~^0^

버튼 액션을 요따구로 연결 해주시구요~^^

나머지 두 버튼들도 연결 해줍니다~

또 맵뷰도 똑같이 끌어오는데, 요놈은 액션이 아니라 아울렛으로 연결해주셔야겠죠?^^
요로코롬 연결 해봅니다~

흐미~ 근데 이게 왠 에러!!??
에러 내용을 보니 MKMapView가 Unknown type이라네요..;
얘가 맵뷰를 인식하지 못하고 있어요!!!!!!!!!!!!
그럼 이럴땐 어떻게 해줘야 할까요? 고민고민..

자, 아까 위에 개발문서에서 MKMapView 클래스를 사용하려면 어떻게 해야 했죠?ㅎㅎ
프레임워크랑 헤더파일을 추가해야 했죠?
헤더파일을 살포시 추가해 줍니다.
이래서 개발문서가 중요하다 중요하다 하는거예요~ 혼자 하다가 모르면 구글보다 요놈이 백만배 빠를수도 있으니까요^^&

짜잔~~~~~~~~~~~~~~
맵을 보셨나요?ㅎㅎㅎ
(p.s 시뮬레이터에서 자신의 위치는 캘리포니아 애플 본사로 찍힙니다.)
아직은 밋밋하고 재미없네요~ 조금 더 해볼까요?

이번에는 내가 있는 곳의 위치를 알아보는 기능도 써보고 싶습니다~
프레임 워크중에 CoreLocation.framework를 추가해줍니다~ 

짜잔~ 추가해주고 아래와 같은 코드들도 입력해 줍시다~
참, 캡쳐에는 빨간 네모가 없지만 CoreLocation.h 헤더도 import해줍니다~

그리고 나서 SEOUL버튼을 누르면!!!???
지도가 뿅하고 오긴 오는데... 흐음... 확대도 안되고 재미가 없네요 ㅋㅋ

그래서 이동도 되고 확대도 되도록 코드를 조금 바꿔 넣어줘 봅시다~
코드에 대한 설명은 코멘트에^^

짜잔~ 이렇게 서울 시청으로 오네요 ㅎㅎㅎ 

그리고 드디어! 내가 있는 곳으로 지도를 움직이고 싶을 때..!! 어떻게 해야 하나???
showUserLocation메서드에 아래와 같이 입력합니다.
그런데 에러...ㅠㅠ
또 뭐가 문제일까요..?

자... 문제에 봉착했다면..?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
그렇죠 개발문서!
뭔가 의심되는 부분이 있다면 알트키를 누른채로 그녀석 위로 커서를 올리면 손꾸락 모냥이 나옵니다~ 클릭!
그리고 Class reference로 가보는거죠~

MKUserLocation이라는 클래스는MKUserLocation에 선언되어 있군요!?

그렇다면 <MapKit/MKUserLocation.h> 헤더를 추가해 주고 빌드해 봅니다~

그래도... 에러...ㅠㅠ

또다시 의심가는 부분에서 개발문서를 살펴봅니다~ 그 결과 저는 이렇게 두개의 헤더를 추가해줬습니다~
왜 CoreLocation/CLLocation.h 헤더를 추가했는지 여러분들도 찾아 보아용~ 이힛!ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
(-_- 이런 표정이 되셨다면 죄송...;)

그리고 코드를 이쁘게 적어주고 빌드해봅니다~
빌드성공!!

실행 해 봅니다~
ME, Close, SEOUL 버튼들이 모두 잘 동작하는지 확인합니다~^^

하아... 힘드네요 ㅠㅠ

이제 아울렛 연결이나 액션 연결... 클래스 생성 등의 소소한거는 캡쳐 그만해야겠어요..ㅋㅋㅋ

요렇게 짧은거 하는데 이미지 캡쳐만 30개..ㅋㅋㅋㅋㅋㅋㅋㅋ

휴휴, 다음에는 또 뭘 해볼까요?

여러분들은 뭐가 더 필요하신가요? 댓글달아주세요~ 진짜 그거 해보게요 ㅋㅋ

저도 맵뷰 처음 써봐서(그래서 개발문서 캡쳐가 많은 것일지도..ㅋㅋ) 부족한 점이 많은데요, 요청하시는게 있으면 배워서라도 포스팅 할게요 ㅋㅋ
 
그럼 이만 빠바이~

by yagom

twitter : @yagomsoft

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

RSS Feed 받기   

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

댓글 남기기

Close