2012-02-12 3 views
4

내 iOS 앱에서 Xcode에서 segues 설정과 함께 UINavigationController를 사용하고 있습니다. 뷰 중 하나의 경우 탐색 바를 숨기고 싶습니다. 다른 것들은 표시하고 싶습니다. 나는 메인 뷰에서 바를 성공적으로 숨길 수 있었고, 다음 뷰로 넘어갈 때 그것을 멋지게 애니메이트 할 수 있었지만, 네비게이션 바의 뒤로 버튼을 사용하여 돌아 가면 바가 사라지고 검정색이 남았다. 직사각형을 클릭 한 다음 이전 뷰로 다시 전환합니다. prepareForSegue의 반대쪽과 같은 것으로 이것을 잡아 내고 네비게이션 바를 멋지게 움직이게하고 싶습니다. 이것을 할 수있는 방법이 있습니까? 에서prepareForSegue와 비슷하지만 뒤로 가야 할 때

답변

2

현재 prepareForSegue:sender: 대신 prepareForDesegue:sender:이 없습니다. 권장되는 방법은 대상에 ViewController이라는 참조를 설정하고 소스 ViewController에 다시 연결하는 것입니다. 그런 다음 대상 ViewController이 해제되면 소스 ViewController에 다시 최대 ViewController이 될 것임을 알릴 수 있습니다. 일반적으로 참조는 prepareForSegue:sender:에 있습니다.

이 콘크리트를 만들기 위해 ViewControllerA이 있다고 가정하고 ViewControllerB으로 연결하려고합니다. ViewControllerB에서 ViewControllerA을 참조하는 속성을 정의합니다. 어떤 코드가, ViewControllerB에, 나중에

ViewControllerB * vcB = (ViewControllerB *)[segue destinationViewController]; 
vcB.delegate = self; 

: (.이 종종 프로토콜을 사용하여 수행하지만, 간단, 단지 ViewControllerB@property ViewControllerA *delegate;이 있다고 가정 할) 그런 다음, prepareForSegue:sender:에서 다음을 수행 할 것 ViewControllerA으로 돌아 가려는 경우 self.delegate을 사용하여 ViewControllerA으로 다시 돌아가 약 소개 될 예정임을 알리고 UINavigationBar으로 필요한 모든 작업을 수행 할 수있는 기회를 제공하십시오.

0

뷰의 탐색 모음은 다음과 같은 방법 배치, 표시 할 UIViewController : 특정 다음과 같은 (당신이 경우 일부 로직을 추가 할 수 있습니다

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
} 


- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 


    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
} 

당신이 줄 어떤 이유로 곁에하려면 뷰에는 여전히 막대가 필요함).

+0

예, 그게 앞으로 앞으로 나가면 바를 붙이고 싶습니다. 그러나 내가 돌아 가면 나는 그것을 움직이게하고 싶습니다. 그 일을하기 위해 어떤 종류의 논리를 사용할 수 있습니까? – Brice

관련 문제