2010-06-04 6 views
2

iPhone 응용 프로그램에서 작업 중입니다. 응용 프로그램에는 탐색 모음이 맨 위에 있습니다. "View1"과 "View2"라는 두 가지 뷰가 있습니다. "View2"뷰 컨트롤러를 밀면 탐색 모음에 "View1"제목이있는 뒤로 버튼이 표시되므로 view1로 돌아갈 수 있습니다.iPhone 응용 프로그램의 뒤로 돌아 가기 항목 이벤트

이제 내 질문에 해당 버튼을 클릭하면 어떤 이벤트가 발생합니까? 또한 탐색 막대에서 해당 뒤로 단추의 텍스트를 변경할 수 있습니까?

어떤 도움을 주시면 대단히 감사하겠습니다.

감사합니다.

답변

5

다시 버튼 만 있으면 특별한 이벤트가 없습니다. 대신 다양한 viewWillAppear:, viewWillDisappear: 등의 방법을 사용할 수 있습니다. 예 :

//In View2: 
- (void) viewWillDisappear:(BOOL) animated { 
    [super viewWillDisappear:animated]; 
    if (!goingToSubscreen) { 
     //Do something important here 
    } 
    goingToSubscreen = NO; 
} 

//In View1: 
- (void) viewWillAppear:(BOOL) animated { 
    [super viewWillAppear:animated]; 
    if (wentToSubscreen) { 
     //Do something important here 
    } 
    wentToSubscreen = NO; 
} 

booleanansToSubscreen 및 goingToSubscreen은 이름이 지정된대로 설정해야합니다. View2 상단의 탐색 컨트롤러에 다른보기를 밀어 넣는 경우 중요한 항목을 수행하지 않도록 goingToSubscreen을 YES로 설정해야합니다. 반대로 View2를 누르면 View1에서 wentToSubscreen을 YES로 설정해야합니다. 그러면 다시 표시 될 때 해당 화면에서 돌아와서 재미있는 일이 발생하고 View1이 처음 표시 될 때가 아닙니다.

편집 :는 아이폰 OS 5.0, 나는가 내장되어이 속성을 생각 . isBeingDismissedviewWillDisappear: 동안 YES으로 설정하고 뒤로 단추를 누른 경우 viewDidDisappear:으로 설정합니다. 참고로, 확인할 수있는 속성은 다음과 같습니다

뒤로 버튼의 제목을 변경으로
isMovingFromParentViewController 
isMovingToParentViewController 
isBeingPresented 
isBeingDismissed 

이 있으며,이 건물은 이전보기의 뒤로 버튼 항목에 속하는 :

View1.navigationItem.backBarButtonItem.title = @"My New Title"; 

나 :

View1.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleBordered target:nil action:nil] autorelease]; 

세 번째 옵션은 사용자 지정 단추를 사용하여 뒤로 단추를 바꾸는 것입니다. 그것은 당신이 -viewWillDisappear:을 사용할 필요가 없도록 전화하는 당신 자신의 방법을 지정할 수있게 할 것이지만, 이렇게하면 뒤로 화살표 버튼 대신에 사각형으로 버튼을 보여줄 것입니다. 이 단추는 View1 대신 View2를 사용합니다.

View2.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleDone target:self action:@selector(dismissView)] autorelease]; 
0

이 솔루션을 후크 팝보기 컨트롤러로 사용하고 있습니다.

// In some view controller 
- (void) viewDidDisappear:(BOOL)animated 
{ 
    if (self.navigationController == nil) { 
     // popped from navigation stack. 
     // do something... 
    } 
} 

하지만보기 컨트롤러하면 터지는 훅하지 않습니다가, popToViewController를 호출 자체를 통해 추진는 : 스택 또는 popToRootViewController에서 자기 아래 컨트롤러 : 애니메이션 애니메이션 :