Swift: 通过 presentViewController 传递导航栏
Swift: pass navigation bar through presentViewController
在我的情节提要中有 Navigation Controller、viewContrl1 和 viewContrl2。对于下一次更新,我必须设法将 viewContrl2 连接到 viewContrl2 的另一个实例。
从 Whosebug 获得一些帮助后,我通过以下方式管理它:
let newView2 : ViewContrl2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("viewContrl2") as! ViewContrl2
...
...
view2.presentViewController(newView2, animated: true, completion: nil)
它实际上完全符合我的要求,但顶部没有导航栏。
在 ViewContrl2 class 中,有 @IBOutlet weak var navigation: UINavigationItem!,这是我直接从 StoryBoard 连接的。但是,导航在新创建的 viewControl2 中似乎不起作用。我需要这个,因为用户必须能够按下返回并返回到上一个视图。任何人都有解决这个问题的方法吗?
谢谢
如果您希望 NavigationBar
被看到,请出示 NavigationController
,如下所示:
let newView2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ViewContrl2") as! ViewContrl2
let navigationControlr = UINavigationController(rootViewController: newView2)
self.presentViewController(navigationControlr, animated: true, completion: nil)
要关闭 PresentedViewController
在 viewDidLoad
中添加以下代码
//Customise the way you want:
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Cancel, target: self, action: "backAction")
在您的 ViewController2
Class
中添加以下 function
func backAction(){
if self.presentingViewController != nil{
self.dismissViewControllerAnimated(true, completion: nil)
}else{
self.navigationController?.popViewControllerAnimated(true)
}
}
要返回,您需要使用现有的导航控制器。
只需添加一个检查以确保。
let newView2 : ViewContrl2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("viewContrl2") as! ViewContrl2
if let navCtrl = self.navigationController
{
navCtrl.pushViewController(newView2, animated: true)
}
else
{
let navCtrl = UINavigationController(rootViewController: newView2)
self.presentViewController(navCtrl, animated: true, completion: nil)
}
在我的情节提要中有 Navigation Controller、viewContrl1 和 viewContrl2。对于下一次更新,我必须设法将 viewContrl2 连接到 viewContrl2 的另一个实例。
从 Whosebug 获得一些帮助后,我通过以下方式管理它:
let newView2 : ViewContrl2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("viewContrl2") as! ViewContrl2
...
...
view2.presentViewController(newView2, animated: true, completion: nil)
它实际上完全符合我的要求,但顶部没有导航栏。 在 ViewContrl2 class 中,有 @IBOutlet weak var navigation: UINavigationItem!,这是我直接从 StoryBoard 连接的。但是,导航在新创建的 viewControl2 中似乎不起作用。我需要这个,因为用户必须能够按下返回并返回到上一个视图。任何人都有解决这个问题的方法吗?
谢谢
如果您希望 NavigationBar
被看到,请出示 NavigationController
,如下所示:
let newView2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ViewContrl2") as! ViewContrl2
let navigationControlr = UINavigationController(rootViewController: newView2)
self.presentViewController(navigationControlr, animated: true, completion: nil)
要关闭 PresentedViewController
在 viewDidLoad
//Customise the way you want:
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Cancel, target: self, action: "backAction")
在您的 ViewController2
Class
function
func backAction(){
if self.presentingViewController != nil{
self.dismissViewControllerAnimated(true, completion: nil)
}else{
self.navigationController?.popViewControllerAnimated(true)
}
}
要返回,您需要使用现有的导航控制器。 只需添加一个检查以确保。
let newView2 : ViewContrl2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("viewContrl2") as! ViewContrl2
if let navCtrl = self.navigationController
{
navCtrl.pushViewController(newView2, animated: true)
}
else
{
let navCtrl = UINavigationController(rootViewController: newView2)
self.presentViewController(navCtrl, animated: true, completion: nil)
}