在我的HomeViewController中,我有两个segue,一个在单击一个单元格时处于活动状态,另一个在单击条形按钮项目titeled join list
时处于活动状态。单击条形按钮项目时,我想检查用户是否已登录。如果用户没有登录,我想要出现LoginViewController界面,如果他已登录,我想要出现joinViewController的界面。我通过从连接intem到joinViewController按住ctrl从故事板创建了连接segue,这是我的代码
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "detail" {
var detailScene=segue.destinationViewController as! DetailViewController
if let indexPath=self.table.indexPathForSelectedRow{
let selectedPerson=listPerson[indexPath.row]
detailScene.person=selectedPerson
}}
else
if segue.identifier == "join"{
if !userLoggedIn{
let vc : AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier("LoginViewController")
self.presentViewController(vc as! UIViewController, animated: true, completion: nil)
}
}
}
一切正常但在LoginViewController中我添加了IBAction以关闭视图
class LoginViewController: UIViewController {
@IBAction func dismissView(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
单击该按钮时,将加载joinViewController而不是homeViewControlled。我做了什么干净,如何修复解雇按钮?
答案 0 :(得分:0)
如果您想动态选择要显示的segue
,则不应将其设置为UIBarButtonItem
。我的建议是将两个segue
从HomeViewController
拖到LoginViewController
和JoinViewController
,其名称为loginSegue
和joinSegue
。
从UIBarButtonItem
创建IBAction
到HomeViewController
。在代码中它应该看起来像这样:
@IBAction func barButtonItemPressed(sender: AnyObject) {
if userLoggedIn {
self.performSegueWithIdentifier("joinSegue", sender: self)
} else {
self.performSegueWithIdentifier("loginSegue", sender: self)
}
}
我不确定您对解雇按钮的要求。但是,您无法覆盖prepareForSegue
以选择在此阶段显示哪个UIViewController
,它已经会显示UIViewController
。