4

나는 식별자가있는 밀어 넣기 연결선과 연결된 6 개의 하위 클래스 UIViewController가 있습니다.NavigationController에서 여러 UIViewController 밀어 내기

A> B> C> D> E> F가됩니다. 모든 컨트롤러를 컨트롤러 F 및 디스플레이 F 컨트롤러에 자동으로 스택하는 컨트롤러 A에서 단추를 구현하는 방법을 찾을 수 없습니다. 스태킹은 setViewControllers 메서드를 사용하면 segue 식별자를 잃어 버리기 때문에 (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated을 통하지 않고 UINavigationController 인스턴스에서 수행해야합니다. 타이!

답변

7

이 같은 pushViewController:animated:와 함께 할 수 있어야한다 : 완벽

// This method belongs to view controller A class 
-(void)pushToF { 
    // I am assuming that A is already in the navigation controller 
    UINavigationController *nav = self.navigationController; 
    UIViewController *b =[self.storyboard instantiateViewControllerWithIdentifier:@"B"]; 
    [nav pushViewController:b animated:NO]; 
    UIViewController *c =[self.storyboard instantiateViewControllerWithIdentifier:@"C"]; 
    [nav pushViewController:c animated:NO]; 
    ... // And so on, until F 
    UIViewController *f =[self.storyboard instantiateViewControllerWithIdentifier:@"F"]; 
    // You can push the last one with animation, so that end users would see it 
    [nav pushViewController:f animated:YES]; 
} 
+0

작품, 고마워요! 하나 더 질문. 컨트롤러 A에서 모달 뷰를 구현하고 해당 모달 뷰가 아닌 pushToF 메서드가있는 경우 코드는 어떻게됩니까? 처음에는 모달보기를 프로그램 적으로 무시하고 작성한 것을 실행해야한다는 것을 알고 있지만 구조화 방법을 모르겠습니다. 도와 주셔서 감사합니다. –

+0

@AndrejTrilavov''A ''가 모달이면'self.navigationController'와는 다른 방식으로 네비게이션 컨트롤러에 대한 참조를 얻어야합니다. 또한 버튼을 닫고'viewWillDisappear : animated :' – dasblinkenlight

+0

에서'pushToF'를 호출 할 수 있습니다. 불행히도'viewWillDisappear : animated :'가 불가능하므로 VC에 다른 버튼이 있습니다. 나는 스스로를 dismissViewControllerAnimated : NO'해야하고, 당신이 제공 한 코드를 구현하지만 그것을 쓰는 방법을 모른다. 타이! –

관련 문제