我有两个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 回答
我已经找到了解决方案 . 我使用general present命令来显示视图控制器,而不是使用self.navigationController来显示前一个控制器 .
这是我的代码,它解决了我所有的问题 .
我希望它能帮助那些面临像我这样的问题的人 .