Skip to content

4차 모임 진행 내용 01

nephilim edited this page Apr 9, 2011 · 1 revision

view controller

intro

  • 정의
    • view를 '표시'하고 '관리'
    • 예: view lifecycle management, navigation
    • 하는 일 요약: 화면(view)을 present, populate, interact
    • 배경: iOS의 small screen은 content 분배가 발생할꺼야 아마...
  • 종류
    1. custom vc
    2. container vc
      • navi, tabbar, split vc
      • 거의 기존에 있는 걸 쓴다.
    3. modal view controller
      • parent-child 관계로 창이 뜨는 '방식'
  • figure 1-2(p17): class overview

custom vc

  • 주로 포함하는 내용
    • glue code between Model and View
    • cooperate with other vc
  • UIViewController
    • vc.view
    • ViewBasedApp-AppDelegate로 확인
  • 예: table view controller
    • tableVC를 만들어야 한다면? 불편
    • table-related behavior
      • section header!
      • table header!
      • TableViewProgrammingGuide
    • tableview.view: rotate, alpha ... > 조절가능
  • (p28)associated items
    • viewcontroller에 붙어 있는 것들(p61)
      • navigation item
      • toolbar item
      • tabbar item
    • contrainer 뷰에 얹혀서(!) 보임
  • (p29) view controller 내용 미리보기
    • subclass UIViewController
    • member vars: data object
    • member vars: view object
    • action
    • 기타 관련 객체 용어
      • status bar
      • navigation bar
      • tab bar
      • tab bar items
      • title
      • nib

view lifecycle management

  • view load
    1. request vc.view 2-1. (view) return view 2-2. (!view) loadView
    2. viewDidLoad
  • view를 채워넣는 방법 (p40)
    1. 오버라이드하기: loadView()
      • 뷰 초기화
        • [[view alloc] initWithFrame: [UIScreen mainScreen].applicationFrame];
      • super 호출 금지: default view load가 쓸데없이 수행
      • 향후 코어 그래픽스 등으로 새로운 view을 만들어보자!
    2. nib 로드
    3. 빈 UIView 객체
  • low-memory warning
    • didReceiveMemoryWarning()
      • default 구현은 소극적 view release > viewDidUnload()
      • 전략적으로 override 필요
  • clean up
    • (p41) release, assign nil
self.myProperty = nil // 1.

[myProperty release]; // 2.
myProperty = nil;		
- viewDidUnload
- dealloc
  • view 표시 관련
    • (p55, p56)
    • viewWillLoad: view를 윈도우에 표시하기 전
    • viewDidLoad: view를
    • viewWillUnload
    • viewDidUnload

practice (custom vc)

  • ?
  • 만들어진 vc표시하기: (p53)
  • frame 지정하기: custom view controller의 경우는 해주는게 좋다.
 - (void)applicationDidFinishLaunching:(UIApplication *)application { 
   // At this point, the main nib file is loaded. 
   // It is a good idea to set the view's frame before adding it to a window. 
   [viewController.view setFrame:[[UIScreen mainScreen] applicationFrame]];
   [window addSubview:viewController.view]; 
   [window makeKeyAndVisible];
 }

nib file(복습)

  • nib as metadata
    • link thru file's owner
  • integrated nib = vc + view
    • (p36) figure 2-5
  • create modal vc programmatically
  • (p34)

vc's orientation

  • 다음 과제
  • shouldAutorotateToInterfaceOrientation:
    • UIInterfaceOrientationPortrait
    • UIInterfaceOrientationLandscapeLeft

navigation vc

  • vc이다!
  • navigation > modal,
  • modal > navigation이 연결되기도 한다.

tab bar vc

  • (p22) tab bar는 단절된 기능

modal vc

  • not a specific vc,
  • but a "way" of presenting any view controller