'UIAlertView'에 해당되는 글 2건

  1. 2012.08.16 iOS개발하기 #44. UIAlertView Customize (Override) (4)
  2. 2012.05.11 iOS개발하기 #29. 경고창 (UIAlertView) (20)

오늘의 주제

1. 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 : http://fb.yagom.net

twitter : http://twitter.yagom.net ( @yagomsoft )

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

RSS Feed 받기   


↓↓↓저 열심히 썼는데 손가락 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 




Posted by yagom

댓글을 달아 주세요

  1. 컴맹 2012.09.15 04:15  댓글주소  수정/삭제  댓글쓰기

    상속받은 클래스에 새로운 메소드를 추가하여, 사용하는 방법이 정말 유용하죠.ㅎㅎ
    오늘도 잘 배우고 갑니다.~~^^

  2. 으아아아 2015.06.27 19:00  댓글주소  수정/삭제  댓글쓰기

    저는 안되네요.. 에러고 뭐고 그냥 원래의 alertview 대로 뜹니당 ㅠㅠ 뭘잘못했을까요


오늘의 주제

1. UIAlertView


스물 아홉번째 시간입니다.^^

지난 번까지는 웹뷰에 대해서 알아보았습니다.

이번에는 AlertView에 대해서 알아보도록 하겠습니다.

AlertView는 xib에서 생성이 되지 않고 코드로 생성을 해 주어야 합니다.ㅎ

그럼 일단 시작해 봅시다~!

# UIAlertView

자, 일단 AlertView는 delegate가 없으면 무용지물입니다.
이녀석은 그냥 얼굴만 비출 뿐 아무것도 하지 않으려고 합니다.
그래서 우리는 ViewControllerForWeb에게 AlertView의 델리게이트를 해달라고 말할거예요.


자, 그리고 AlertView도 하나가 아니면 구분을 할 수 없기 때문에 태그를 넣어줄 예정이예요.
그래서 enum으로 먼저 어떻게 해줄지 정해줍니다.
enum은 첫 번째 수를 지정해 주고, 쭈욱 써주면 자동으로 하나씩 숫자가 늘어서 등록이 되어요.
첫 번째 녀석이 1이면 두 번째는 2, 세 번째오는 녀석은 3... 이런식으로요~


자, 그리고 나서 전에 작성했던 코드들을 조금 수정해 봅니다.


자, 실행 해 봅시다.
이렇게 얼럿이 뜨는게 보이시나요?ㅎ
버튼을 눌러봅니다.


반응이 없어요..ㅋㅋㅋ 네... 아까 말씀드렸듯이 이녀석은 그냥 얼굴만 비출 뿐 아무것도 하지 않으려고 합니다.
그래서 우리는 델리게이트에게 일을 맡겨야 해요.

자, 오늘도 어김없이 레퍼런스를 뒤적뒤적 합니다~
어김없이 커맨드 쉬프트 알트 / 를 누릅니다.
검색을 쇼숑~
아래 보니 사용자가 버튼을 클릭했을 때 무엇을 해줄지 말해줄 수 있는 메소드가 있군요.


이녀석에 대해 설명을 보니 유저가 버튼을 통해 대답을 하면 델리게이트에게 무엇을 할지 말해 줄 수 있는 녀석인 것 같네요.
복사해옵니다 ㅎㅎ


그리고 처리해줄 델리게이트인 ViewControllerForWeb에서 구현해 줍니다.

우리가 원하는 기능에 대해서 잘 써줍니다.
역시나 설명은 주석으로^^

 
짜잔~ 실행해서 눌러보면 어떤가요?ㅎ
잘 동작하나요?


정말 종료하시겠습니까?

예.

그러므로 오늘 포스팅은 여기까~지 ㅋㅋㅋㅋㅋㅋㅋㅋ

다음에 보아용~^^


by yagom

twitter : @yagomsoft

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

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 



Posted by yagom

댓글을 달아 주세요

  1. 생초보 2012.05.11 14:56  댓글주소  수정/삭제  댓글쓰기

    감이와요 감이와요~~~ 창문밖에서 한줌 햇살이 쫘아~악 비춰주는거 같네요 ㅋㅋㅋ 지금 날씨는 우중충하지만 ㅋㅋㅋ


    감잡았어요 ~~

    퇴근후 다시 첨부터 복습 해봐야겟어요

    강좌 잘 보고있어요 감사합니다 ㅎㅎ

  2. 인절미후후 2012.06.06 19:48  댓글주소  수정/삭제  댓글쓰기

    잘 읽고 갑니다~
    얼럿뷰는 그냥 워닝 메시지 띄워주기만 하고 델리게이트는 사용하지 않았었는데
    야곰님께서 사용하신걸 보니까 저도 사용하고 싶어지는 마음이 마구 샘솟네요 좋은 강좌 감사합니다.

  3. 쌩초짜 2012.06.28 17:40  댓글주소  수정/삭제  댓글쓰기

    항상 잘 읽고 있습니다.

    프린트까지 하면서 보다가 문득 궁금한게 있어서요.
    위의 예제에서 alterview 의 delegate를 선언해주는 부분있자나요?
    헤더파일에...
    그부분을 지워보고 컴파일을 해도 잘 돌아가던데
    그부분을 꼭 써줘야하는건가요?
    안써주는거랑 어떤차이가 있는건가요?


    변경전
    @interface ViewControllerForWeb : UIViewController <UIAlertViewDelegate>

    변경후
    @interface ViewControllerForWeb : UIViewController

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.06.29 09:42 신고  댓글주소  수정/삭제

      제가 아직 확인해 보지는 않았지만, 아마 alertView의 델리게이트를 self로 지정해 줄 때 경고가 생길 것입니다.

      써주신 두 줄의 코드 차이는 사실상 명시를 해 주었다는 것에 큰 의미가 있을 것 같습니다.

      한 마디로 써줘도 그만 안써줘도 그만이지만(안 써주면 경고가 발생되죠), 이왕이면 명시적으로 써주는 것이 좋겠죠 :-)

      자주 들러주세요 :-)

  4. hobbang 2012.07.19 16:22  댓글주소  수정/삭제  댓글쓰기

    sample 보고 따라서 써보기만 했었는데,
    강좌 올려주신걸 보니 어떻게 써야 하는지.. 이해가 잘 되네요. 감사합니다.

  5. Favicon of https://kier9.tistory.com BlogIcon 리현느 2012.07.29 07:56 신고  댓글주소  수정/삭제  댓글쓰기

    나 어특햄 흑흑 경고창 안뜨넹

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.07.29 13:01 신고  댓글주소  수정/삭제

      아픈게 아직 안나으신건가요 +_+ㅋㅋ
      버튼에 태그가 잘 들어가 있는지,
      버튼에 메소드가 잘 연결이 되어있는지,
      [alert show];
      가 작성이 되어있는지... 등등 잘 살펴보세용~
      이래도 저래도 안되면 빌드 클린 해 보고 다시 해보셔요~
      커맨드+쉬프트+K

  6. Favicon of https://kier9.tistory.com BlogIcon 리현느 2012.07.30 09:13 신고  댓글주소  수정/삭제  댓글쓰기

    될때까지 해봤더니 되요 ㅎㅎㅎㅎ 짱짱

  7. 서동휘 2012.08.06 13:26  댓글주소  수정/삭제  댓글쓰기

    이상하게도 ㅠㅠ AlertView *alert 쓰는게 여기서 부터 빨간색 느낌표가 뜨네요

    AlertView를 인식하지 못하는 것 같은데 무슨 문제일까요 ㅠㅠ

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.08.06 16:52 신고  댓글주소  수정/삭제

      안녕하세요 동휘님~!
      AlertView가 아니라 UIAlertView 입니다~ㅎ
      만약에 그래도 에러가 난다면 위에 똑같은 alert 객체를 생성하셨는지 확인해 보세요~ㅎ
      같은이름의 객체가 겹치면 에러가 나옵니다~!

  8. 나에게넌 2012.08.13 10:59  댓글주소  수정/삭제  댓글쓰기

    폭풍 흡입!!! 감사합니다..

  9. Favicon of https://gogodao.tistory.com BlogIcon rustyDAO 2013.02.15 16:53 신고  댓글주소  수정/삭제  댓글쓰기

    야곰님~
    맥부기에서 야곰님 강좌 처음 접하고, 여기서 계속 강좌보면서 공부하다가 모르는 건 맥부기 야곰님 강좌에 질문했었는데 ~
    T-Story 가입해서 이제 여기다 남겨볼려구요 ^~^ㅋㅋㅋ

    하나하나 다 해보고 있는데, 오늘 switch문에서 으아 오타를 내버려서ㅠㅠ web뷰 닫기버튼이 제대로 안먹히는 실수를....
    무슨문제인지 찾을려고 디버깅을 해보았는데요~ visual studio에서 디버깅하던 그런 경험으로 ㅋㅋㅋ
    아 근대 아직 xcode에서 디버깅 하는게 너무 미숙하네요 ㅋㅋ 또 뭐 메모리 누수 감지 시뮬레이터 등 이런것도 있다던데,,

    야곰님 여유가 되신다면 ! 조심스레 디버깅, 시뮬레이터 다루는 것도 조심스레,, 요청해봅니당
    배우는 입장에서 염치 없지만,,, 강좌에서 담번에는 뭐할까요? 이러셔서 ㅋㅋㅋㅋㅋㅋ 헤헤,,ㅋㅋㅋㅋ

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.02.15 17:47 신고  댓글주소  수정/삭제

      안녕하세요 다오님 :)
      제가 요즘 개인적으로 건강 악화와 사정으로 인하여 포스팅을 하지 못하고 있습니다...^^;

      이렇게 찾아와 주셨는데 좋은 답변을 드리지 못해서 정말 죄송합니다... ㅠ_ㅠ

      제가 직접 올릴 순 없지만, 좋은 강좌들 링크 알려드릴게요.
      도움이 되면 좋겠습니다 :)

      가끔 들러서 또 덧글 남겨주세요 ㅎ

      포스팅은 못해도 질문답변이나 도와드릴 수 있는 부분이 있으면 언제든 준비가 되어있습니다 ^^*

      http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1
      http://www.raywenderlich.com/2657/memory-management-in-objective-c-tutorial
      http://www.raywenderlich.com/2696/how-to-debug-memory-leaks-with-xcode-and-instruments-tutorial

  10. Favicon of https://gogodao.tistory.com BlogIcon rustyDAO 2013.02.18 09:37 신고  댓글주소  수정/삭제  댓글쓰기

    아.. 야곰님 빠른 쾌유를 빕니다..
    아프신대도 이렇게 질문 받아주시고, 또 좋은 자료도 소개해 주셔서 정말정말 감사합니다..
    이 은혜를 어찌 갚아야 할지 ㅠㅠ

    얼른 몸부터 빨리빨리 나으셔요 !

  11. DinoJ 2013.06.11 10:41  댓글주소  수정/삭제  댓글쓰기

    정말 강의가 재밌고 귀에 쏙쏙 들어와요~!!
    항상 감사해요 야곰님^^