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 到另一个视图控制器