오늘의 주제
- UIAlertView Customize
마흔 네 번째 시간입니다.^^
정말 오랜만의 포스팅입니다!
그동안 잘 지내셨나요?ㅎ
정말 무더위가 장난이 아니네용...
동남아 날씨
지난 번 공지로 iOS6와 스토리보드로 출발해 보겠다고 말씀드렸는데, 아직 제가 준비가 되지 못한 관계로 오늘도 iOS5로, 스토리보드 없이 진행합니다!
자, 그럼 다시 힘찬 출발을 해 볼까요?ㅎ
UIAlertView 커스터마이징
전에
2012/05/11 - [iOS Dev/함께해보기] - iOS개발하기 #29. 경고창 (UIAlertView)
포스팅에서 AlertView에 대해서 해 보았습니다.
이번엔 요 녀석을 커스터마이징 하는 방법을 살짝 이야기 해볼까 합니다.
물론 제가 오늘 소개해 드리는 방법 외에도 더 무궁무진한 방법이 있지만, 오늘은 간단한 선에서 진행 해 봅니다.
물론 여기에도 단순히 커스터마이징에 대한 정보가 아니라 부분 부분 지나쳐온 이야기들이 나올거예요..ㅎㅎㅎ
자, 그럼 새로운 프로젝트를 생성해 봅니다.
프로젝트 이름은 WithYagom이구요, ARC를 사용합니다~ SingleView Application으로 생성하였구요~
자, 프로젝트를 만들어 주고나면 ViewController가 있죠? 요녀석에 AlertView 하나를 만들어 띄워봅니다.
뾰뵹~ 우리가 하던대로 잘 나오죠?ㅎ
이제 커스터마이징을 위해서 우리가 새로운 클래스를 만들건데요, UIAlertView를 상속받는 클래스를 만드는 것입니다.
상속이 뭔가요?ㅋㅋㅋ
분명히 보신분도 보지 않으신 분들도 계실건데요, 이번 기회에 보고 옵시다~
2012/03/28 - [Objective-C] - Objective C <9>. 상속(1)
2012/04/10 - [Objective-C] - Objective C <10>. 상속(2) - 오버라이딩
자, 그리고 조금 이따가 바로 오버라이딩을 해 줄거예요.
일단 클래스를 만들어 봅시다 ㅎㅎ
프로젝트 네비게이션에서 우클릭 또는 control + 클릭 해 주시구요~ 아니면 단축키 command + N 을 눌러주시면 됩니다~
Cocoa Touch - Objective-C class를 선택해 주시고~
CustomAlertView라는 이름으로 UIAlertView를 상속받은 클래스를 만들어 줍니다!
자, 이렇게 UIAlertView를 상속받은 클래스가 생겼습니다.
이렇게 상속받은 클래스는 부모클래스인 UIAlertView의 메서드와 property를 모두 사용 할 수 있습니다.
게다가 오버라이딩을 한다던지, 우리가 새로 뭔가를 추가해 줄 수 있는 녀석이 되는거죠.
자, 우리가 원래 UIAlertView를 화면에 보여줄 때 사용한 메서드가 뭐였죠?
네! show!!!!!!!!!!
이녀석을 우리 입맛에 맞춰서 오버라이딩 해 줄거예요 ㅎㅎ
일단 [super show] 라는 곳에 주석을 안달았는데, super는 이 클래스의 부모클래스를 뜻합니다.
즉, [super show]는 부모클래스에서 show를 호출 해 주는 거예요. 우리가 show안에서 무슨 일을 처리하는지 모르니까 일단 불러줍니다.
그리고 그 후에 우리가 원하는 대로 입맛에 맞게 후보정을 해 줍니다 ㅎㅎㅎ
show 메서드를 오버라이딩 해 주는 것입니다.
참, 그리고 소스에 보듯이 이미지들이 프로젝트에 들어와 있어야 합니다.
캡쳐한 것 보면 어느새 제가 이미지들을 낑궈 넣어논 것을 볼 수 있을거예요 ㅎㅎㅎ
자, 그리고 이제 다시 ViewController로 돌아와서 우리가 만든 새로운 클래스의 인스턴스를 만들어주고 show를 호출해 봅니다.
참! 위에 헤더 import한 것을 네모박스 안했는데, 꼭 해주세요 ㅎㅎ
두구두구두구둥!!!
우왘ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
요상하긴 하지만 어쨌든 바뀌었습니다 ㅋㅋㅋ
이미지는 새로 만들기 귀찮은 관계로, 그냥 있는 것 쓰는 걸로? ㅋㅋㅋ 물론 여러분들은 이쁜 이미지를 만들어서 넣어보세요 ㅎㅎ
자, 이렇게 오버라이딩을 통해 우리 입맛에 맞게 커스터마이징을 손쉽게 할 수 있습니다!
그런데 저렇게 딱딱 고정해놓고 쓰기에는 뭔가 좀 아쉽죠?ㅎ
그래서 뭔가 다음에 쓰기 더 용이하도록 메서드를 이쁘게 만들어 줘 봅시다.
CustomAlertView.m으로 돌아와서 오버라이딩 했던 show가 아닌 우리가 필요한 녀석들을 인자로 받을 수 있도록 메서드를 조금 수정해 봅니다~
그리고 원래 없던 메서드를 우리가 추가했고, 다른 곳에서 호출해 주고 싶다면 헤더에 매소드의 원형을 꼭 써주셔야 합니다.
이렇게요~~ 꼭이요~~
그리고 나서 ViewController.m 으로 다시 돌아와서 요렇게 호출을 해 주면!!!!!!!!
똻!!!!!!!! 똑같이 동작합니다. 하지만 다음 번에 다른 이미지를 넣어주고 싶을때는 용이하게 이미지를 바꿔줄 수 있겠죠?ㅎㅎ
자, 처음에 우리는 오버라이딩을 통하여 직접 메서드를 건드려 줬구요,
두 번째로는 새로 메서드를 생성해 주어서 [super show]라는 메서드를 호출하여 show라는 메서드를 호출한 것과 동일한 결과를 만들어 냈고, 그 다음에 우리 입맛에 맞도록 커스터마이징 한 것입니다.
좀 헷갈리시나요?ㅎㅎ
여튼 차분히 잘 생각을 해 보시길 바랄게요.
이렇게 상속을 통하여 메서드를 오버라이드 하거나 원하는 메서드를 추가하여 전혀 다른 모습으로 커스터마이징을 할 수 있습니다.
물론 UIAlertView 뿐만 아니라 다른 클래스도 마찬가지겠지요?ㅎㅎㅎ
더 많은 기법과 더 많은 자료들은 구글님께 물어보시면 많을거예요 ㅎㅎ
사실 제가 커스터마이징보다 더 하고 싶었던 말이 오버라이딩이 아닌가 싶기도 하네요~
다음에도 유용한 녀석 하나 데려와 볼게요~
커밍 쑨!
by yagom
facebook : https://facebook.com/yagompage
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.