[강의 내용]
  1. Main Window 이외의 추가적으로 윈도우 생성 / 전환 / 삭제
  2. Window-Based Project


1.Project 생성하기
  1) Create a Xcode Project -> Window-based Application - > "ChangeView"
  2) Interface Builder 실행 -> Library (Shift + Cmmnd + L ) -> "View" ( Cocoa Touch) 2개를 MainWodw.xib 추가

2. View와 Xcode 연결 
  1) ChangeViewAppDelegate.h 파일에 view 관련 변수 추가
@interface ChangeViewAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
 
 IBOutlet UIView *firstView;
 IBOutlet UIView *secondView;

}

  2) Interface Builder와 변수 연결하기 
      a. MainWindow.xib 파일 내에 "Change View App Delegate" 항목을 선택한 후 마우스우클릭 ( 혹은 Cmmnd키를 누르고 마우스 좌클릭)을 통한 Drag&Drop으로 view 항목에 연결  
  3) view 변경
      a. MainWindow.xib에서 view를 선택하고 Identity("Cmmnd + 4") 창을 열어, Name 항목에 해당하는 명칭을 입력 
      b. Label 추가 : 명칭 입력 / 버튼 추가 : 명칭 추가 ( firstView, ㄴecondView 모두)  
  4) 생성된 뷰를 MainWindow에 반영하기 
      a. ChangeViewAppDelegate.m 파일,  didFinishLaunchingWithOptions함수에 첫번째 뷰 추가
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
// Override point for customization after application launch
[window addSubview:firstView];
[window makeKeyAndVisible];
 return YES;
}
  4) 뷰전환 기능 구현
      a. 함수선언 : ChangeViewAppDelegate.h 에 추가
-(IBAction) ChangeView;
      b. Delegate 연결 : firstView, secondView에 생성한 Button을 우클릭하여 MainWindow.xib의 "Change View App Delegate"에 Drag&Drop한 후 ChangeView 함수를 선택한다.  
      c. ChagneView 함수 내용 구현
-(IBAction) ChangeView
{
NSArray *subs = [window subviews];
 
//window 객체는 하나의 view를 가짐
[[subs objectAtIndex:0]removeFromSuperview];
 
if([subs objectAtIndex:0]== secondView)
{
[window addSubview:firstView];
}
else {
[window addSubview:secondView];
}
}

[질문] firstView, secondView는 alloc를 하지 않는가? 
  - (자답) 이미 Interface Builder를 통해 생성되어 있고, 마우스 우클릭 과정을 통해 각변수의 포인터로 연결시켰음. 

[질문] firstView, secondView를 Pointer 형이 아닌 UIView 변수로도 받을 수 있을까? 
  - 몰라, 해 봐봐..  -> 해봤는데, xib에서 Drag&Drop 기능도 안되고 컴파일시에도 헤더파일 선언부에서 에러가 발생하는 것으로 보아 무조건 포인터 형으로 받아야 됨.
 
Posted by 꿈을펼쳐라
,