首页 文章

以编程方式将UIBarButtonItem目标设置为以前的视图Controller

提问于
浏览
0

我有两个UIViewController(我没有使用UINavigationController),它们被命名为ParentViewController和ChildViewController .

但是,我无法使用故事板为子视图控制器添加UINavigationBar,因此我以编程方式在其中添加UINavigationBar和UIBarButtonItem .

我已成功将导航栏和条形按钮项添加到子视图控制器 . 我得到的问题是我无法为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)
}

然后我将navigationBar添加到子视图控制器viewDidLoad()中的子视图

为了您的信息,我没有在父视图控制器中执行任何操作 . 它只是我在故事板上创建的segue,用于在按下时显示子视图控制器 .

请帮助我......

1 回答

  • 0

    我已经找到了解决方案 . 我使用general present命令来显示视图控制器,而不是使用self.navigationController来显示前一个控制器 .

    这是我的代码,它解决了我所有的问题 .

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

    我希望它能帮助那些面临像我这样的问题的人 .

相关问题