如何在 segue 目标视图控制器中执行 segue
how to perform a segue in segue destination view controller
在当前名为 OnBoarding 的视图控制器中,具有操作的按钮是这个
@IBAction func jump(_ sender: Any) {
if UserDefaults.standard.bool(forKey: "UserLog"){
self.performSegue(withIdentifier: "goHome", sender: nil)
}else{
self.performSegue(withIdentifier: "goLogin", sender: nil)
}
}
所以如果有登录用户回到家,但不是信息然后去登录,(ViewController),登录视图控制器有一个segue到registerViewController,有一个 return 按钮登录,注册过程后 returned 到登录屏幕,所以现在在 onboardingViewController 操作之后而不是去登录,下一个屏幕应该是注册,我正在寻找一种方法来命令 loginviewController 从 onBoardingViewController 执行 segue。试过这段代码,但似乎不起作用。
if segue.identifier == "goLogin"{
let vc = segue.destination as! ViewController
vc.performSegue(withIdentifier: "register", sender: nil)
}
我正在寻找实现此目的的简单方法,而无需在入职和注册之间进行直接转场,涉及创建新的转场或显示登录屏幕并处理出现或不出现的不同情况。
它不起作用,因为在调用 performSegue(withIdentifier:sender:)
方法时 vc
不在 window
层次结构中。
解决方案
调用 performSegue(withIdentifier:sender:)
方法,一旦 vc
出现在屏幕上。为此,请使用 UIViewController class perform(_:animated:completion:)
.
的方法
if segue.identifier == "goLogin"{
let vc = segue.destination as! ViewController
present(vc, animated: true, completion: {
vc.performSegue(withIdentifier: "register", sender: nil)
})
}
方法尾随闭包可以移到方括号外
if segue.identifier == "goLogin"{
let vc = segue.destination as! ViewController
present(vc, animated: true) {
vc.performSegue(withIdentifier: "register", sender: nil)
}
}
在当前名为 OnBoarding 的视图控制器中,具有操作的按钮是这个
@IBAction func jump(_ sender: Any) {
if UserDefaults.standard.bool(forKey: "UserLog"){
self.performSegue(withIdentifier: "goHome", sender: nil)
}else{
self.performSegue(withIdentifier: "goLogin", sender: nil)
}
}
所以如果有登录用户回到家,但不是信息然后去登录,(ViewController),登录视图控制器有一个segue到registerViewController,有一个 return 按钮登录,注册过程后 returned 到登录屏幕,所以现在在 onboardingViewController 操作之后而不是去登录,下一个屏幕应该是注册,我正在寻找一种方法来命令 loginviewController 从 onBoardingViewController 执行 segue。试过这段代码,但似乎不起作用。
if segue.identifier == "goLogin"{
let vc = segue.destination as! ViewController
vc.performSegue(withIdentifier: "register", sender: nil)
}
我正在寻找实现此目的的简单方法,而无需在入职和注册之间进行直接转场,涉及创建新的转场或显示登录屏幕并处理出现或不出现的不同情况。
它不起作用,因为在调用 performSegue(withIdentifier:sender:)
方法时 vc
不在 window
层次结构中。
解决方案
调用 performSegue(withIdentifier:sender:)
方法,一旦 vc
出现在屏幕上。为此,请使用 UIViewController class perform(_:animated:completion:)
.
if segue.identifier == "goLogin"{
let vc = segue.destination as! ViewController
present(vc, animated: true, completion: {
vc.performSegue(withIdentifier: "register", sender: nil)
})
}
方法尾随闭包可以移到方括号外
if segue.identifier == "goLogin"{
let vc = segue.destination as! ViewController
present(vc, animated: true) {
vc.performSegue(withIdentifier: "register", sender: nil)
}
}