2017-07-18 82 views
0

我有兩個UIViewController(我沒有使用UINavigationController),它們被命名爲ParentViewController和ChildViewController。以編程方式將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()

爲了您的信息,我沒有在父視圖控制器中做任何事情。它只是我在故事板上創建的segue,以便在按下時顯示子視圖控制器。

請善意幫助我...

回答

0

我已經找到了解決方案。我沒有使用self.navigationController來顯示前一個控制器,而是使用general present命令來顯示視圖控制器。

這是我的代碼,它解決了我所有的問題。

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

我希望它能幫助其他面臨像我這樣的問題的人。

相關問題