以编程方式将 UIBarButtonItem 目标设置为上一个视图控制器
Set UIBarButtonItem target programmatically to previous view Controller
我有两个 UIViewController(我没有使用 UINavigationController),分别命名为 ParentViewController 和 ChildViewController。
但是,我无法使用故事板为子视图控制器添加 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,用于在按下时显示子视图控制器。
请帮助我...
我已经找到解决办法了。我没有使用 self.navigationController 来显示之前的控制器,而是使用了通用的 present 命令来显示视图控制器。
这是我的代码,它解决了我所有的问题。
let vc = self.storyboard?.instantiateViewController(withIdentifier: "ParentViewController")
self.present(vc!, animated:true, completion:nil)
希望对和我一样有问题的朋友有所帮助
我有两个 UIViewController(我没有使用 UINavigationController),分别命名为 ParentViewController 和 ChildViewController。
但是,我无法使用故事板为子视图控制器添加 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,用于在按下时显示子视图控制器。
请帮助我...
我已经找到解决办法了。我没有使用 self.navigationController 来显示之前的控制器,而是使用了通用的 present 命令来显示视图控制器。
这是我的代码,它解决了我所有的问题。
let vc = self.storyboard?.instantiateViewController(withIdentifier: "ParentViewController")
self.present(vc!, animated:true, completion:nil)
希望对和我一样有问题的朋友有所帮助