iOS에서 프로그래밍 방식으로 탐색 컨트롤러 뒤로 버튼 호출


84

UINavigationController 기반 iPhone 앱에서 메서드에서 뒤로 버튼을 누르고 뷰로 돌아가는 것과 같은 프로그래밍 방식을 수행하고 싶습니다.

즉, 여기에 표시된대로 작업 버튼을 자동으로 누릅니다.

내비게이션 컨트롤러 이미지

일반 iOS 전화를 걸 수 있습니까? 아니면 추가 정보가 필요합니까?

답변:


188

UINavigationController-popViewControllerAnimated:메서드는 원하는 작업을 수행해야합니다.

[navigationController popViewControllerAnimated:YES];

12
Steve와 Niels에게 감사합니다. 내가 사용한 솔루션은 [self.navigationController popViewControllerAnimated : YES]였습니다. easy;)
oberbaum

이것은 uitabbar에 추가 된 viewcontroller를 제외하고는 훌륭하게 작동합니다. 어떤 단서 ??
virata

1
추가 [self.navigationController popViewControllerAnimated:YES];했지만 아무 작업도 수행하지 않지만 작동중인 해당 버튼에 대한 경고가 표시됩니다.
mohsin.mr

흠, 빈 화면, 응답하지 않는 앱 및 콘솔에 다음과 같은 메시지가 나타납니다. "예기치 않은 상태에서 탐색 전환을 완료하는 중입니다. 탐색 모음 하위보기 트리가 손상 될 수 있습니다."
Kurt

24

실제로 버튼을 프로그래밍 방식으로 누르지 않고 단순히 버튼을 누른 결과를 복사하고 싶지 않다고 가정하면 내비게이션 컨트롤러에 현재 뷰 컨트롤러를 표시하도록 지시해야합니다.

[self.navigationController popViewControllerAnimated:YES];

그러면 스택에서 제거되고 이전 뷰 컨트롤러로 돌아갑니다.


21

스위프트 3.0

루트보기로 돌아 가기

self.navigationController?.popToRootViewController(animated: true)

이전보기로 돌아 가기

self.navigationController?.popViewController(animated: true)

스위프트 2.3

루트보기로 돌아 가기

self.navigationController?.popToRootViewControllerAnimated(true)

이전보기로 돌아 가기

self.navigationController?.popViewControllerAnimated(true)

7

당신은 전화해야합니다

popViewControllerAnimated:

뷰 컨트롤러를 추가하는 것과 반대입니다. pushViewController:animated:


6
[self.navigationController popViewControllerAnimates:YES];

가장 좋은 옵션이지만 동일한 뷰 컨트롤러 클래스에 있지 않거나 뒤로 버튼 메서드가 호출되기 전에 델리게이트가 변경되면 시도 할 수도 있습니다.

먼저 뒤로 버튼을 정의해야합니다.

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

그런 다음 backButtonTapped 메서드에서 호출 할 수 있습니다.

[self.navigationController pushViewController:desiredViewController animated:YES];
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.