Search code examples
iosswiftios8xcode6ibaction

IBAction not being called after modal transition


I have the following IBActions on my navigation bar

    @IBAction func logoutPressed(sender: AnyObject) {

    SweetAlert().showAlert("Are you sure?", subTitle: "Do you really want to logout?", style: AlertStyle.Warning, buttonTitle:"Cancel", buttonColor:UIColorFromRGB(0xD0D0D0) , otherButtonTitle:  "Yep", otherButtonColor: UIColorFromRGB(0xDD6B55)) { (isOtherButton) -> Void in
        if isOtherButton == false {
            let popTime = dispatch_time(DISPATCH_TIME_NOW, Int64( Double(NSEC_PER_SEC) * 4.0 ))
            SwiftSpinner.show("Logging out")
            dispatch_after(popTime, dispatch_get_main_queue(), {
                PFUser.logOut()
                self.performSegueWithIdentifier("logoutSegue", sender: nil)
                SwiftSpinner.hide()

            })
        }
        else {
        }
    }

    }

//OPTIONS MENU
@IBAction func optionsPressed(sender: AnyObject) {
    let alert = SCLAlertView()
    alert.addButton("Submit Feedback"){
        var subjectText = "feedback"
        var toRecipient = ["some email address"]
        var mc:MFMailComposeViewController = MFMailComposeViewController()
        mc.mailComposeDelegate = self
        mc.setSubject(subjectText)
        mc.setToRecipients(toRecipient)
        self.presentViewController(mc, animated: true, completion: nil)
    }
    alert.addButton("About") {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewControllerWithIdentifier("about") as UIViewController
        self.presentViewController(vc, animated: true, completion: nil)
    }

and so on....

And this works perfectly fine when I launch the app to the view controller containing these IBActions. However, the problem is when I perform a modal/push transition into the said view controller, the IBAction's aren't being called....

Any ideas?


Solution

  • I just dealt with this issue too, may not be a general solution as for me it was a silly mistake, but the issue was that i had changed the class of the 'view' inside my ViewController: ViewHeirarchy

    The highlighted view was named something else until i changed it back to UIView in the identity inspector:

    identityInspector

    Hope that helps you, or someone else :)