1

내 스토리 보드에는 네비게이션 컨트롤러, viewContrl1 및 viewContrl2가 있습니다. 다음 업데이트에서는 viewContrl2를 viewContrl2의 다른 인스턴스에 연결하는 방법을 만들어야합니다. 그것은 실제로 내가 원하는 정확히 무엇을 만들지 만 상단에 내비게이션 바없이스위프트 : 내비게이션 바 (presentViewController)

let newView2 : ViewContrl2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("viewContrl2") as! ViewContrl2 
... 
... 
view2.presentViewController(newView2, animated: true, completion: nil) 

: 일부 점점 유래에서 도움이 후

, 나는 통해 관리. ViewContrl2 클래스에는 StoryBoard에서 직접 연결 한 @IBOutlet weak var navigation : UINavigationItem!이 있습니다. 그러나 탐색이 새로 작성된 viewContrl2에서 작동하지 않는 것 같습니다. 사용자가 돌아가서 이전보기로 돌아갈 수 있어야하므로이 기능이 필요합니다. 누구나이 문제에 대한 해결책이 있습니까? 당신이 제시하시기 바랍니다하는 NavigationBar 볼 수하려면

당신에게

+0

ViewContrl2는 UINavigationController의 하위 클래스입니까? –

+0

좋아요 ... 스토리 보드에 친숙하지는 않지만 Navigation Controller의 관계는 View1Control에 대한 "루트보기 컨트롤러"입니다. 그런 다음 View1Controller에서 Push Segue를 통해 View2Contrl을 호출하고 마지막으로 새로운 View2Control이 presentViewController를 통해 view2Contrller에서 호출됩니다. 탐색은 view1Contrl 및 view2Contrl에 대해 표시되지만 view2Contrl에도 표시되지 않습니다. – hikki

답변

3

되돌아 갈 수 있으려면 기존 탐색 컨트롤러를 사용해야합니다. 확인을 위해 확인을 추가하십시오.

let newView2 : ViewContrl2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("viewContrl2") as! ViewContrl2 

if let navCtrl = self.navigationController 
{ 
    navCtrl.pushViewController(newView2, animated: true) 
} 
else 
{ 
    let navCtrl = UINavigationController(rootViewController: newView2) 
    self.presentViewController(navCtrl, animated: true, completion: nil) 
} 
+0

좋아요 ... 그래서 실제로 작동합니다. 그러나 새로운 newViewController2가로드 된 후 곧바로 작동이 멈추고 이유가 없습니다. – hikki

+0

다른 코드를 게시하십시오. –

+0

nvm 작동합니다. 나는 우연히 두 번 밀었습니다. – hikki

3

감사 NavigationController 다음과 같은 :

let newView2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ViewContrl2") as! ViewContrl2 

let navigationControlr = UINavigationController(rootViewController: newView2) 

self.presentViewController(navigationControlr, animated: true, completion: nil) 

PresentedViewControllerviewDidLoad

//Customise the way you want: 
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Cancel, target: self, action: "backAction") 

에 다음 코드를 추가 해제하려면 ViewController2 클래스에 function 다음을 추가하십시오.

func backAction(){ 

    if self.presentingViewController != nil{ 
     self.dismissViewControllerAnimated(true, completion: nil) 
    }else{ 
     self.navigationController?.popViewControllerAnimated(true) 
    } 
} 
+0

표시되지만 View1Control 및 View2Control 탐색과의 연결이 끊어졌습니다. 왼쪽 상단에 돌아 가기 버튼을 표시하지만 아무 것도하지 않습니다. 예를 들어, view2Control -> new view2Control의 상황에서, newView2Controller에서 사용자가 다시 누르면 view2Controller로 돌아 가야합니다. – hikki

+0

답변을 수정했습니다. 확인해주세요 –

+0

이 게시물에서 나는 많은 것을 배웠습니다. 귀하의 코드도 잘 작동해야합니다,하지만 Chrsitian의 대답은 더 효율적으로 보였습니다. 하지만 당신의 도움에 정말 감사드립니다. 정말 고맙습니다. – hikki

관련 문제