2017-07-18 5 views
0

に私はParentViewControllerとChildViewControllerとして命名されている2つのUIViewControllerは(私はUINavigationControllerを使用していない)があります。設定UIBarButtonItemターゲットプログラムで前のビューコントローラ

しかし、私は、子ビューコントローラのストーリーボードを使用してUINavigationBarを追加することはできませんので、私はプログラム的にその中にUIBarButtonItemでUINavigationBarを追加します。

ナビゲーションバーとバーボタンアイテムを子ビューコントローラに正常に追加しました。問題は、UIBarButtonItemのターゲットを設定できないため、親ビューコントローラが押されたときに表示されます。

あなたのためにこれは私が使用するコードですが、私は彼らに

let navigationBar : UINavigationBar = { //Label to display the text 
    let navBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: 100, height: 50)) 
    navBar.translatesAutoresizingMaskIntoConstraints = false 

    let navItem = UINavigationItem(title: "SomeTitle"); 
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: nil, action: "selector"); 
    let backItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: self, action: #selector(backAction(_:))); 
    //let backItem: UIBarButtonItem = backsItem 

    navItem.rightBarButtonItem = doneItem; 
    navItem.leftBarButtonItem = backItem; 
    navBar.setItems([navItem], animated: false); 

    return navBar; 
}(); 

@IBAction func backAction(_ sender: Any?) { 
    self.navigationController?.popViewController(animated: true) 
} 

をどこに置くかわからなかったし、私は子供ビューコントローラのviewDidLoad(中サブビューにnavigationBarを追加)

情報、私は親ビューコントローラで何もしなかった。私がストーリーボードで作成したちょうどセグは、押されたときに子ビューコントローラーを表示します。

私は親切に私を助けてください...

答えて

0

私はすでに解決策を見つけました。以前のコントローラを表示するためにself.navigationControllerを使用する代わりに、一般的なpresentコマンドを使用してView Controllerを表示しました。

これは私のコードであり、すべての問題を解決しました。

let vc = self.storyboard?.instantiateViewController(withIdentifier: "ParentViewController") 
self.present(vc!, animated:true, completion:nil) 

私のような問題に直面している他の人に役立つことを願っています。

関連する問題