프리젠테이션 젠을 읽고 나면 한가지 병폐가 생긴다. 허접한 프리젠테이션은 마구 지적하고 싶어지는 병... 난 그렇게 못하면 서도 .. 

키노트 프로그램을 즐겨 사용하는 사람들이 그래도 내 생각에는 상당히 프리젠테이션 젠 에서 말하는 것에 근접하려고 노력하는 사람이 많다는 느낌을 받는다. 

원래 잡스 형님의 키노트는 아트 그것과 그리 다르지 않음을 느낄 수 있는데, 우리나라에도 이런 부분을 갈고 닦는 분들이 축제를 준비중이 셨으니... 

이름하야 KKUF 

소개 동영상은 다음에서 볼 수 있다. 더 자세한 내용은 iDreamer 님의 블로그에서 확인해보자.
신고

근래에 있었던 스터디와 세미나 2건

2008.11.13 14:44

최근에 osxdev 에서 한건의 세미나와 한건의 스터디가 있었다. 이 세미나와 스터디의 특징은 역시나 수용님이 촬영해주시는 동영상!! 이 백미가 아닐까. 이건 애플 WWDC 와는 다르게 인코딩 되는대로 ㅠㅠ 공유를 해주시니 참석하지 못한 분들도 현장의 분위기와 세미나 내용에 대해서 공유 받을 수 있다.

 

 

하나

Simulator.jpg

먼저 아이폰 개발 스터디! 이제 첫발을 떼었다고 볼 수 있는 스터디인데 아직 출간이 되지 않은 베타 상태의 책 (iphone sdk development) 를 가지고 진행하는 것이 이색적이다. 아직 그만큼 나와있는 괜찮은 책이 전무하단 얘기라고도 볼 수 있겠다. 첫 번째 모임이라 가볍게 시작될 줄 알았다면 오산인 듯.. 첫 모임부터 7시부터 10시30분을 찍는 세미나가 연속적으로 진행되었다. 식사는 빵으로 대충 해치우고 열정을 가지고 참여하는 모습들이 반갑게 느껴졌던 모임이었다는 생각이 든다. 세미나 내용이나 스터디일정 에 공개가 되어있다. 이미 참여를 하지 못한 분들은 위에서 말했듯이 아쉬워 할 필요가 없는 것이 1차 세미나사진 이나 동영상 및 세미나 자료까지 공개가 되니 역시나 참여하는 분들에게 고마울 따름이다.

 

참고 (아이폰 스터디 일정)

1차 아이폰 개발 기초 다듬기 (기간: 2008.10.24 ~ 2008.12.17)
주제 일정 발표자
0. iPhone Developer Program 2008.11.5 mocona
1. Hello iPhone 2008.11.5 kimty8074
2. View Controllers 2008.11.5 jasonpa
3. Table Views 2008.11.5 jenix
4. Navigation 2008.11.19 idiel
5. Tab Bar Controller 2008.11.19 godrm
6. File I/O 2008.11.19 mocona
7. Preference 2008.12.3 wangsy
8. The SQLite Database 2008.12.3 tokasia
9. Network I/O 2008.12.3 beanpole
10. Multi Touch and Gestures 2008.12.17 withsage
11. Core Animation 2008.12.17 wookay

Osxdev_seminar.jpg

OSXDev 세미나는 대략 한달에 한번씩 정기적으로 지원하는 분들이 세미나를 주도적으로 진행해 나가는 것이 특징이다. 11/12일 수요일에는 Jenix 군이 두번째 세미나를 진행해 주었는데 아직 자료등이 올라온 상태는 아니므로 해당 위키페이지를 주시하고 있어야 할 듯.

어쨌든 참여한 사람들역시 반가운 얼굴들이 많았는데, 이번에는 일본에서 참석한 분! 도 있었다는 사실! 일본에 있는 아이폰 애플리케이션 개발 회사(Mobilis Solutions, Inc) 에 다니고 있는 분이었는데 사장님이 한국분이지만 직원들은 다국적인 특이한 회사인것 같았다. 요기도 관심을 가지고 지켜봐야 할 것 같다.

 

마지막

여하튼 최근에 일련의 일들이 나의 흥미를 끌게끔 해주는 일들이 조금씩 다시 생기는 것 같다. 개인적으로 열심히 "무술" 도 하고 있고 (이건 사범이 목표다 ㅡㅡ;;), 다시 애플쪽 개발에 손가락 하나쯤은 담그게 된 것 같고, 여름에 WWDC 에서 시작된 좋은 인연들을 계속 이어가는 것 같아서 그나마 다행이라는 생각이 든다. 앞으로가 더 기대되는 요즘이다.

이 글은 스프링노트에서 작성되었습니다.

신고

'재미' 카테고리의 다른 글

Hackintosh Hackintosh  (2) 2009.02.25
Rails2.2 New Features  (2) 2008.11.27
근래에 있었던 스터디와 세미나 2건  (0) 2008.11.13
[iPhone SDK Development] chapter02-ViewControllers  (0) 2008.11.06
My Brain Sex ID  (0) 2008.09.02
루비 여섯번째 세미나와 발표자료  (0) 2008.09.02

[iPhone SDK Development] chapter02-ViewControllers

2008.11.06 13:36

개요

뷰 컨트롤러는 아이폰 개발에서 중심이 되는 부분이며, 모든 뷰 컨트롤러는 UIViewController 의 인스턴스이다.

 

컨트롤러는 일반적으로 MVC(Model-View-Controller) 패턴 중에서 중심 역할을 한다. BL(Business Logic)이 담겨있는 Model, 실제 인터페이스를 표현하는 뷰, 그리고 이런 뷰와 가장 밀접하게 관계된 곳이 Controller 다. 때문에 컨트롤러는 가장 자주 다루게 되는 부분이다.

1장의 예에서 처럼 뷰를 기술하는데 인터페이스 빌더를 통해서 nib 파일을 생성한 것이 전부이다. 간단한 애플리케이션에서는 모델이 존재하지 않을 수 있다. 하지만! 뷰 컨트롤러는 만들었다. 아이폰 애플리케이션이라면 적어도 뷰 컨트롤러 하나는 있어야 된다. 그만큼 뷰 컨트롤러가 가장 핵심이라는 말씀.

 

아이폰 애플리케이션에서도 컨트롤러는 유저가 UI에 반응하거나, 디바이스가 회전하는 등의 이벤트가 발생할 때 애플리케이션이 어떻게 반응해야 하는지를 다룬다.

 

뷰 컨트롤러에는 세가지 특수한 타입이 있다.

  • TableView
  • Navigation
  • TabController

 

2.1 첫번째 뷰컨트롤러 (first-iteration)

예제) 스크린을 건드리면 버튼이 상단 또는 하단으로 이동하는 애플리케이션

 

프로젝트생성

  1. xib 파일을 열어서 Interface Builder 실행 (뷰와 뷰컨트롤러 연결)

    1. 인터페이스 빌더한테 버튼이 클릭될 때 어떤 메소드가 수행되어야 하는지 버튼과 뷰컨트롤러를 연결시켜준다

      1. nib 도큐먼트 윈도우에서 File's Owner 오브젝트의 Identity Inspector 를 불러온다.
      2. class actions 에 buttonClieked: 액션을 추가한다.  (ButtonViewController 가 buttonClicked: 라는 메소드를 갖는다는 의미)

        Picture_2.png Picture_3.png

      3. 즉, Controller 에 action 을 추가하고 UI 오브젝트가 이벤트 발생시 어떤 컨트롤러의 어떤 액션에 연결되는지 지정하는 것임.
  2. XCode 에서 컨트롤러 코드 생성

    1. header(.h) 에 declaration 추가
    2. 구현코드 작성 (.m)

2.2 멀티 뷰컨트롤러

2.3 아웃렛 생성과 연결

[개념/용어1] "forward declaration"

@class 라는 directive(지시자) 를 가리키는 말인데, 헤더에서 또다른 헤더를 include 하는 것 대신 사용한다.

Picture_4.jpg

[개념/용어2]"outlets and actions"

보통 인터페이스 빌더에서 버튼같은 컨트롤이 활성화 되었을 때 응답하기 위한 오브젝트에 연결하기위한 용도로 사용한다.

컨트롤(source)을 드래깅 해서 오브젝트의 액션(destinnation)과 연결하게 된다.

2.4 뷰컨트롤러 생성

모달뷰를 다루는 뷰컨트롤러를 추가해보자.

[개념/용어3] "delegation"

다른 오브젝트에게 책임을 위임한다는 개념. 이 것은 위임 받은 오브젝트(second object)가 first object 와는 별도로 작성될 수 있다는 걸 의미한다. (? second object / first object)

[개념/용어4] "@properties" directive   

컴파일러에게 해당 인스턴스 변수에 대한 get/set 메소드를 구현하라는 선언임.

[개념/용어5] "@synthesize" directive    

헤더에 선언된 @properties 필드에 대해서 구현에서는 get/set 메소드를 생성하기 위해 @synthesize directive 를 사용한다 (?)

Configuring the Text Field

[개념/용어6] "first responder" object    

"first responder"가 된다 라는 표현을 쓴다. 특정 이벤트 타입을 얻어내는 최초의 인라인 오브젝트(function, code?), 모든 Cocoa Touch 의 텍스트 관련 컨트롤들은 first responder 되면 키보드가 나타난다.

 

TextField 등을 사용할 때 사용자가 어떻게 사용하길 바라는지 주의 깊게 고려해야한다. 두가지 설정 실험 "Capitalize"(correction 설정), "Return Key"(편집종료로 터치 하도록) 설정.

키보드를 나타나게 했을 경우 몇가지 고려해야할 사항

  • 텍스트에 일반적이지 않은 단어가 있으면 Correction을 Off 한다.
  • 텍스트가 이름과 같은 형식이면 각 단어를 Capitalize 한다.
  • 텍스트가 전화번호이거나 이메일주소 또는 URL 이라면 알맞은 키보드 타입을 사용한다.
  • 유저가 편집 종료시 어떻게하길 기대하는 가에 따라서 (특정 URL 로 이동, Google 에서 검색, 데이타를 저장 ) 알맞은 "Return" key 타이틀을 선택 한다.

 

"Text entry 가 얼마나 애플리케이션의 일부로서 적절하고 자연스럽게 느껴지느냐에 공을 들이면 들일수록 인기있는 애플리케이션이 될 것이다"

 

유저에게 단서가 되는 Placeholder text (입력 필드의 디폴트 안내문구 같은 것)를 적절하게 사용해야 한다. 이는 유저가 컨텍스트를 잃어버리지 않고 유지하는데 도움을 준다.

 

UITextFieldDelegate protocol 의 두가지 메소드

  • textFieldShouldReturn:    유저가 편집을 끝냈다는 것을 나타낼 때 text field 에 의해서 호출된다.

    • [YES|NO] YES => validation 을 원할 때, NO=> resign 으로부터 text field 를 first responder 상태로 유지하고 싶을 때.
  • textFieldDidEndEditing:   text field 가 편집이 끝날 때 마다 호출된다.  (ex. 셈플 예제에서 model view 를 animate out 시킬 적절한 포인트다)  

Picture_8.png

 

[개념/용어7] "resignFirstResponder"

text field 에 대한 first responder 상태를 resign

2.5 두번째 뷰컨트롤러

presentModalViewController:animated 메소드

Picture_5.jpg    Picture_7.png

셈플코드 제작 후기

  • Compile Error

    • StarterViewController.h 파일에서 아웃렛을 작성할 때 오타가 있었다.
        IBOutlet EditorViewController *EditorViewController;    // 이것 때문에 한참 삽질함.
  • 빌드가 제대로 된 이후에 시뮬레이터에서 애플리케이션이 실행이 안되고 계속 종료되는 문제 발생. (EXC_BAD_INSTRUCTION) 등등등의 에러 메시지...

    • 콘솔 로그를 살펴보니 EditorViewController 를 못찾았다. 위에서 오타난 상태로 IB 에서 연결시켰던 것이 문제였음.
    • 다시금 IB 에서 연결을 새로한 다음 -> 다시 클래스로 저장해주었더니 정상적으로 실행되었다.
    • IB 꼬졌다 ㅡㅡ;; 변경이 바로 반영 안되더라.

 

셈플코드첨부 : Button.zip , Starter.zip

실행후 Capitalize 등이 제대로 동작하는지 함 보자.

 

디버깅 삽질을 도와준 jenix, humbroll tanks.

 

이 글은 스프링노트에서 작성되었습니다.

신고

'재미' 카테고리의 다른 글

Rails2.2 New Features  (2) 2008.11.27
근래에 있었던 스터디와 세미나 2건  (0) 2008.11.13
[iPhone SDK Development] chapter02-ViewControllers  (0) 2008.11.06
My Brain Sex ID  (0) 2008.09.02
루비 여섯번째 세미나와 발표자료  (0) 2008.09.02
업그레이드된 재선 SHOW  (0) 2007.12.31


티스토리 툴바