iOS개발하기 #19. Delegate, Data Source (2)실습해보기~

# 오늘의 주제

1. Delegate 실습 

열 아홉번째 시간입니다.^^

지난 번에는 delegate의 개념에 대해 잠깐 살펴보았지요?
이번에는 말보다는 실습을 한 번 해보겠습니다 ㅎㅎ

어제는 제 어머니 생신이었습니다!!! 뭐.. 그렇다구요 ㅎㅎㅎ

자 그럼 스따뚜~~~~~~~~~~~~

## MKMapViewDelegate

자, 지지난번 까지 사용했던 프로젝트 고대로 계속 사용합니다~
지난번 포스팅처럼 어떠한 객체(여기서는 맵뷰)가 또다른 객체(여기서는 SecondViewController)를 자신의 delegate로 먼저 선언을 해 줘야 합니다.
SecondViewController에서 생성해준 myMapViewController안에 있는 myMapView객체가 SecondViewController를 자신의 대리자로 선언해줍니다.
여기서 self라는 키워드는, SecondViewController.m에서 써졌기 때문에 SecondViewController의 객체를 뜻합니다.

어? 그런데 저렇게 또 경고문구가 뜹니다.!!
내용인 즉슨 SecondViewController가 MKMapView의 delegate가 되기에 적절하지 않다는 뜻인 것 같은데요~
왜 그럴까요??
그 객체가 어떤 객체의 딜리게이트가 되겠다고 선언이 될때, 자기 자신도 준비가 된 상태여야 합니다!
그래서 나는 그 객체의 대리자가 될 준비가 되어있다! 라고 헤더에 명시해 주어야 합니다. 아래와 같은 방법으로 준비가 되었음을 알려줍니다.

자, 그럼 MKMapView의 Delegate는 무엇을 할 수 있을까요?
궁금하다면 개발문서로 가봐야겠지요?ㅎㅎ
또는 웹버젼의 개발문서를 참조합니다.
어!? 그런데 Protocol 이라는 단어가 은근 거슬리네요?ㅋㅋㅋ delegate라는 녀석이 프로토콜의 개념안에 포함되는 녀석이므로... 다음에 시간내서 프로토콜에 대해서도 간략히 소개해 보도록 하겠습니다~

제가 이번에 구현해 보고자 하는 것은 맵뷰에서 지도가 움직이려고 할때, 그리고 움직인 후에 delegate를 통하여 특정한 동작을 실행시키려 합니다.
여기 적절한 메서드가 보이네요~ 눌러봅니다.

그러면 이렇게 함수의 원형이 친절하게 나옵니다.
주으윽 긁어서 복사합니다.

여기 이렇게 SecondViewController.m으로 돌아와서 복사해온 함수의 원형을 붙여 넣어주고 안에 그 상황에 맞는 행동을 넣어줍니다.
저는 region이 변경되려 하기전, 그리고 변경 후에 각각 로그를 출력하도록 해보았습니다.
위에 #pragma mark - 라고 써있는 갈색 녀석들은 프로그래머가 책갈피를 만들어 두는 것과 비슷하다고 생각하시면 됩니다.
습관을 들여두면 정말로 유용한 기능이므로, 다음에 시간이 난다면 팁쪽에 따로 포스팅 해보도록 할게요~
아니면 바로 검색 고고씽!

실행해서 지도를 이리저리 움직여 봅시다!

요로코롬 로그가 찍히네요~^0^

이제 좀 감이 잡히시려나 모르겠네요~
이해되지 않는 부분은 댓글 주세요~
제가 매일매일 지켜보고 있으니까요 ㅎㅎ

by yagom

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

RSS Feed 받기   

 

댓글 남기기

Close