오프라인 스터디에서 매주 배운 것을 정리 및 공유하고자 이렇게 스터디 내용을 씁니다.

첫번째 시간은 피해갈 수 없는 Hello, World 입니다.. 전 Hello, iPhone으로 명명 하겠습니다.
스터디 목표는 다음과 같습니다.
- 뷰베이스의 프로젝트를 생성하여 헬로우 프로그램을 작성
- 윈도우베이스의 프로젝트를 생성하고 헬로우 프로그램 작성(xib, controller, delegate를 각각 입력)
- 두 프로젝트를 비교 분석하여 iPhone Cocoa모델의 전반적 흐름을 이해

1.Xcode를 실행 하면 Welcom to Xcode라는 화면의 프로젝트 선택 화면이 나타납니다.
자.. 이제 프로젝트를 생성해 봅시다. Create a new Xcode project를 선택합니다.



다음 화면은 프로젝트가 어떤 베이스로 Template을 생성하는가? 입니다.
좌측의 Application 선택하고  View-Base Appicaton을 선택합니다. 그리고 프로젝트명을 입력합니다.
전 HelloiPhone이라는 프로젝트명으로 생성을 완료~





자 생성된 주요 파일은 다음과 같습니다.
다음 파일은 기억해 두세요..
HelloiPhoneAppDelegate / HelloiPhoneViewController /HelloiPoneViewController.xib / MainWindow.xib



2. HelloiPhoneViewController.xib를 더블클릭하여 IB(Interface Builder)를 실행합니다
다음과 같이 View 윈도우에 라벨을 추가 후 텍스트를 입력합니다.

          

3. 여기서 주의 하실 것이 IB와 Xcode는 각각의 프로그램 입니다.
하나의 프로그램이 아니기 때문에 IB에서 저장을 해야 XCode의 xib파일에 반영이 됩니다.
cmd+s(저장)를 눌러주세요. 그리고 Xcode에서 Build & Run을 실행합니다.
위과 같이 에뮬레이터에서 Hello, iPhone을 보실 수 있습니다.

============================================================
윈도우 베이스의 Hello, iPhone 작성~
============================================================
1. 뉴 프로젝트 생성 시 Window-base Application을 선택 합니다. 저는 프로젝트명을 HelloiPhone2로 하였습니다.
보시는 것과 같이 프로젝트에 생성된 파일 중에 HelloiPhoneController,h/m 및 HelloiPhoneController.xib 파일이 생성되지 않습니다.
이번 프로젝트에서는 두파일 직접 추가,  IB 설정을 하겠습니다.




2. 우선 ViewController 클래스를 생성 해보겠습니다. cmd+n을 누르시거나 파일-뉴파일을 선택 합니다. 좌측 상단의 Cocoa Touch Class클릭 후 UIViewController를 선택하여 생성합니다.
여기서 주의 하실 점이 중간에 있는 옵션 체크 박스입니다. 만들 클래스가 UITableViewController SubClass가 아니기 때문에 언체크....또 With XIB for user interface.. 옵션도 언체크.. 이옵션은 클래스 생성시 해당 뷰클래스의 xib도 같이 생성하는 옵션인데 이번 스터디에서는 cocoa의 구조를 알기 위함이라 체크를 하지 않습니다... 조금뒤에 직접 xib 파일도 추가 하니..신경 쓰지 마시길..
저는 HelloiPhoneViewController라고 파일명을 주었습니다.



3. 생성된 클래스를 MainWindow와 연결하기 위해 HelloiPhone2AppDelegate.h 파일을 열어 다음을 추가 코딩 합니다.

/*HelloiPhone2AppDelegate.h*/
#import <UIKit/UIKit.h>
//생성된 클래스 선언 #import "HelloiPhoneViewController.h" 를 선언도 동일함
@class HelloiPhoneViewController;

@interface HelloiPhone2AppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    //추가된 클래스의 객체를 선언
    HelloiPhoneViewController *viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
//객체생성(메모리 할당)
@property (nonatomic, retain) IBOutlet HelloiPhoneViewController *viewController;
@end

=====================
/*HelloiPhone2AppDelegate.m*/

#import "HelloiPhone2AppDelegate.h"
//헤더 부분에 import를 하지 않고 class 선언을 했을 경우 바디 파일에서 꼭 import 선언
#import "HelloiPhoneViewController.h"

@implementation HelloiPhone2AppDelegate

@synthesize window;
//get, set 사용을 위한 synthesize 선언
@synthesize viewController;

- (void)applicationDidFinishLaunching:(UIApplication *)application {   
    // Override point for customization after application launch
    // 메인윈도우에 view추가
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
}
- (void)dealloc {
    [window release];
    //메모리 해제
    [viewController release];
    [super dealloc];
}
@end

4. HelloiPhoneViewController.xib 파일을 만들어 보겠습니다. cmd+n을 누릅니다.
새 파일 생성에서 좌측 User Interface 클릭 후 view xib를 선택 합니다.
xib 파일은 모두 생성이 완료 되었습니다.. 이제 xib와 생성한 controller 클래스간의 연결을 해봅시다.
먼저 MainWindow.xib를 연결해 보겠습니다. 처음 coontroller 클래스를 생성시 wiith xib for user interface 체크를 선택 하고 controller 클래스를 생성 하였다면 MainWindow.xib의 연결 설정을 할 필요는 없지만.. 이번에는 선택을 하지 않고 생성 하였기 때문에 우선 서로 연결을 해봅니다.
MainWindow.xib를 더블클릭으로 IB를 실행 시킵니다. 아래와 같이 Window.xib 창에는 어떠한 View Controller가 포함 되어 있지 않네요..



우선 Window 창에 View Controller를 추가 해보겠습니다. Library 에서 View Controller를 선택 합니다.
(노랑 바탕의 View입니다 흰바탕의  View와 혼동하지 마시길 바랍니다.) 드래그를 하여 File's Onewr/First Responder/... 등의 내용이 보이는 MainWindow.xib 윈도우 창에 View Controller를 놓습니다. 그럼 아래와 같이 하나의 View Controller 창이 새로 생성이 됩니다... 자 이제 연결을 해봅시다.



먼저 View Controller를 선택하고 Inspector(아래의 창입니다) 에서 cmd+1을 누릅니다. 그러면 속성 창으로 탭이 변경됩니다. (Inspector 창의 각 탭은  cmd+1..2..3..4로 탭창이 변경 가능 합니다.)
아래와 같이 nib name을 HelloiPhonViewController로 변경 합니다.



 그리고 cmd+4를 눌러 Identy Inspector 탭을 엽니다 4번째 탭... 여기서 Class를 HelloiPhoneViewController로 변경 합니다.



다음은 Hello iPhone2 AppDelegate를 선택하여 아래의 그림과 같이 연결을 합니다. Hello iPhone2 AppDelegate 의 연결이 완료 되면  HelloiPhoneController 에도 연결된 내용이 등록됩니다.





5. 자.. 마지막으로 HelloiPhoneViewController.xib 파일을 편집해보겠습니다..
먼저..HelloiPhoneViewController.xib를 더블클릭 해서 IB에 로드합니다.
View에 라벨을 올리고 Hello, iPhone 이라고 디자인을 합니다.
그리고 File's Owner를 클릭 Identy Inspector창을 띄웁니다(cmd+4) 그리고 class 를 HelloiPhoneViewController로 변경합니다.



그리고 File's Owner의 Connection을 연결합니다.



그러면 자동으로 View에도 Connection이 등록 됩니다.



자 이제 Build & Run 을 실행... 동일한 결과를 보실 수 있어요 ^^



수고 하셨습니다..  곰곰히 생각해보세요 흐름을...
중요한 것은 Connnection을 하기전 해당 클래스를 사용자가 추가한 클래스로 변경 한다는 것입니다. 
MainWindow의 경우는 nib name도 같이 변경을 해야 합니다..

잘되지 않을 경우 xcodenine@G메일.컴 으로 연락 주세요
ㅋㅋㅋ 자세히 설명 드릴께요...

정말 수고하셨어요 ^^ 다음 스터디 내용은
여러개의 뷰에 대한 스위칭 입니다. 시간이되면 툴바 및 텝바에 대해서도 진행 합니다.
다음 스터디에 뵙겠습니다.




출처 : http://blog.naver.com/PostView.nhn?blogId=coderider&logNo=50087582575
Posted by 오늘마감