본문 바로가기

개발/App Developer

내비게이션 컨트롤러에서 스택을 관리하는 메서드 네가지

     

pushViewController:animated:

- 새로운 뷰 컨트롤러를 스택에 추가한다.

  추가된 뷰 컨트롤러가 화면에 나타난다.

 

popViewControllerAnimated:

- 현재 뷰 컨트롤러를 제거하고, 이전에 존재하던 뷰 컨트롤러가 전면에 나타난다.

 

popToRootViewControllerAnimated:

- 루트 뷰 컨트롤러를 제외한 스택의 모든 뷰 컨트롤러를 제거한다.

  루트 뷰 컨트롤러가 화면에 나타난다.

 

popToViewController:animated:

- 지정한 뷰 컨트롤러를 만날 때까지 스택의 뷰 컨트롤러들을 제거한다.

  원하는 상위 단계로 곧바로 이동하고 싶을 때 사용된다.

 

항목을 눌렀을 때 하위 뷰 컨트롤러를 보여주는 부분

      toPush.title = @"하위뷰";

      [self.navigationController pushViewController:toPush animated:YES];

 

>내비게인션 아이템 (UINavigationItem) 객체

내비게이션 바에 푸시 또는 팝하는 대상

 

푸시와 팝은 다음과 같이 실행

1. 새로운 뷰 컨트롤러 A 를 화면에 보여주기 위해서 내비게이션 컨트롤러에 푸시

2. 내비게이션 바를 새로운 뷰 컨트롤러 A 의 내용으로 업데이트 하기 위해서 A 의

    내비게이션 아이템 객체를 내비게이션 바에 푸시한다.

3. A 에서 이전 뷰 컨트롤러로 가는 버튼을 누르면 내비게이션 컨트롤러에서 팝된다.

4. 새로운 뷰 컨트롤러에 맞게 내비게이션 바를 갱신하기 위해서 팝한다.

 

내비게이션 아이템은 좌측, 중앙, 우측에 내비게이션 아이템을 담을 수 있다.

 

내비게이션 바를 꾸밀 때

 

      self.navigationItem.prompt = @"상단에 문구가 들어가요";

      UIBarButtonItem* toAdd = [[UIBarBUttonItem alloc] initWithTitle:@"항목추가" style:UIBarButtonItemStylePlain

                                          target:self action@selector(onAdd)];

      self.navigationItem.rightBarButtonItem = toAdd;

      // 버튼이 눌렸을 때 self 의 onAdd 메서드가 호출되도록 인자로 설정

 

initWithBarButtonSystemItem:target:action:     

- 메서드를 이용하면 시스템에 미리 만들어 놓은 버튼도 쓸 수 있다.

 

UIBarButtonSystemItemCamera( 카메라 아이콘)

 

[self editButtonItem] // 편집 버턴을 사용할 수 있다.

 

일반 UIView 를 버튼으로 추가하는 방법도 알아보자.

 

UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectMake(0,0,70,30)];

UIBarButtonItem *toAdd = [[UIBarButtonItem alloc] initWithCustomView:switchView];