perfrmSegueWithIdentifier() 在 swift iOS 中不工作
perfrmSegueWithIdentifier() not working in swift iOS
我不明白我做错了什么,我正在尝试通过标识符执行推送转场,以便在 IF 条件为真时我可以移动到其他视图控制器
segue 总是执行要么我添加这个方法:override func prepareForSegue()
@IBAction func btnClicked(sender: AnyObject) {
if(n.isEqualToString("mpc01") && p.isEqualToString("mpc01"))
{
self.performSegueWithIdentifier("login_to_dashboard", sender: nil)
}
else{
println("no data retrieved")
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "login_to_dashboard" {
// let secondViewController = segue.destinationViewController as VC_dashboard
println("performed segue")
}
else{
println("recieved other command")
}
}
我的 ViewController 故事板 ID:SID_login
我的第二个ViewController 故事板 ID:SID_dashboard
我的 Push Segue ID : login_to_dashboard
我只想通过 ID 执行 segue,而不是直接执行
使用 - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
时您没有控制权。相反,您可以通过以下方式控制是否触发 segue:- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
prepareForSegue
只是让你在触发前做一些自定义工作。
在 prepareForSegue 方法中,您正在检查是否 segue.identifier != "login_to_dashboard"
,我认为您需要将其更改为 == 以执行 segue。
@IBAction func btnClicked(sender: AnyObject) {
if(n.isEqualToString("mpc01") && p.isEqualToString("mpc01"))
{
self.performSegueWithIdentifier("login_to_dashboard", sender: nil)
}
else {
println("no data retrieved")
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "login_to_dashboard") {
let secondViewController = segue.destinationViewController as SecondViewController
println("performed segue")
}
else{
println("recieved other command")
}
}
你应该改用这个方法
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "login_to_dashboard" {
return true
}
else{
return false
}
}
这很奇怪,但由于 segue 继承自 NSObject,您可以尝试:
if(segue.valueForKey("_identifier") as String == "login_to_dashboard"){
var targetController:VC_dashboard = segue.destinationViewController as VC_dashboard
targetController.doSomthing()
}
我做错了,我的问题的解决方案是创建一个从视图控制器到其他视图控制器的 segue,而不是一个按钮到视图控制器
对不起,我是 xcode Swift 的初学者,我问的问题与我的 segue 问题完全不同。我实际上直接从按钮而不是第一响应者创建了一个 segue,这就是为什么它总是导致 segue 到另一个视图控制器
我不明白我做错了什么,我正在尝试通过标识符执行推送转场,以便在 IF 条件为真时我可以移动到其他视图控制器
segue 总是执行要么我添加这个方法:override func prepareForSegue()
@IBAction func btnClicked(sender: AnyObject) {
if(n.isEqualToString("mpc01") && p.isEqualToString("mpc01"))
{
self.performSegueWithIdentifier("login_to_dashboard", sender: nil)
}
else{
println("no data retrieved")
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "login_to_dashboard" {
// let secondViewController = segue.destinationViewController as VC_dashboard
println("performed segue")
}
else{
println("recieved other command")
}
}
我的 ViewController 故事板 ID:SID_login
我的第二个ViewController 故事板 ID:SID_dashboard
我的 Push Segue ID : login_to_dashboard
我只想通过 ID 执行 segue,而不是直接执行
使用 - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
时您没有控制权。相反,您可以通过以下方式控制是否触发 segue:- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
prepareForSegue
只是让你在触发前做一些自定义工作。
在 prepareForSegue 方法中,您正在检查是否 segue.identifier != "login_to_dashboard"
,我认为您需要将其更改为 == 以执行 segue。
@IBAction func btnClicked(sender: AnyObject) {
if(n.isEqualToString("mpc01") && p.isEqualToString("mpc01"))
{
self.performSegueWithIdentifier("login_to_dashboard", sender: nil)
}
else {
println("no data retrieved")
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "login_to_dashboard") {
let secondViewController = segue.destinationViewController as SecondViewController
println("performed segue")
}
else{
println("recieved other command")
}
}
你应该改用这个方法
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "login_to_dashboard" {
return true
}
else{
return false
}
}
这很奇怪,但由于 segue 继承自 NSObject,您可以尝试:
if(segue.valueForKey("_identifier") as String == "login_to_dashboard"){
var targetController:VC_dashboard = segue.destinationViewController as VC_dashboard
targetController.doSomthing()
}
我做错了,我的问题的解决方案是创建一个从视图控制器到其他视图控制器的 segue,而不是一个按钮到视图控制器
对不起,我是 xcode Swift 的初学者,我问的问题与我的 segue 问题完全不同。我实际上直接从按钮而不是第一响应者创建了一个 segue,这就是为什么它总是导致 segue 到另一个视图控制器