简体   繁体   中英

UIAlertController - Transitioning to another segue

I am trying to create a UIAlertController with two options 'Cancel' and 'Log out'. I want the 'Cancel' button to cancel the alert and the 'Log out' button to perform the segue associated with it, which i have set up in the storyboard.

My code is;

class HomeVC: UIViewController {

@IBAction func SignOutBtn(sender: UIButton) {

    let alertController = UIAlertController(title: "Alert",
        message: "Are you sure you want to log out?",
        preferredStyle: .Alert)

    let cancelAction = UIAlertAction(title:"Cancel",
        style: .Cancel) { (action) -> Void in
            print("You selected the Cancel action.")
    }

    let submitAction = UIAlertAction(title:"Log out",
        style: .Default) { (action) -> Void in
            print("You selected the submit action.")
            self.presentedViewController
    }

    alertController.addAction(submitAction)
    alertController.addAction(cancelAction)


    self.presentViewController(alertController, animated: true, completion: nil)
}

}

Well it seems your'e missing the actions you want to perform inside the blocks. (also, you may want to dismiss the alert controller, inside the blocks as well.)

let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action) -> Void in
    print("You selected the Cancel action.")
    alertController.dismissViewControllerAnimated(true, completion: nil)
})
let submitAction = UIAlertAction(title: "Log out", style: .Default, handler: { (action) -> Void in
    print("You selected the submit action.")
    alertController.dismissViewControllerAnimated(true, completion: { () -> Void in
        // Perform your custom segue action you need.
    })
})

如果您已从一个视图设置为另一个视图,则可以在按钮处理程序中注销以进行注销,然后可以调用self.performSegueWithIdentifier("storyboadIdentifier") ,该方法将调用prepareForSegue方法,以便您可以根据需要修改或沿该视图传递信息是。

@pbush25

class HomeVC: UIViewController {

@IBAction func SignOutBtn(sender: UIButton) {

    let alertController = UIAlertController(title: "Alert",
        message: "Are you sure you want to log out?",
        preferredStyle: .Alert)

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action) -> Void in
        print("You selected the Cancel action.")
        alertController.dismissViewControllerAnimated(true, completion: nil)

    })
    let submitAction = UIAlertAction(title: "Log out", style: .Default, handler: { (action) -> Void in
        print("You selected the submit action.")
        alertController.dismissViewControllerAnimated(true, completion: { () -> Void in
            self.performSegueWithIdentifier("segue", sender: nil)
        })
    })

    alertController.addAction(submitAction)
    alertController.addAction(cancelAction)


    self.presentViewController(alertController, animated: true, completion: nil)


}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM