PrepareForSegue is not called after performSegueWithIdentifier

I am new to iOS development. There are many duplicate questions (Sorry). But I could not solve this problem.

prepareForSegue is not called after the executeSegueWithIdentifier function is called.

The show segue identifier is called "segue1". Ctrl-Drag from ViewController to DetailViewController.

Did I miss something?

ViewController.swift:

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

@IBAction func buttonTapped(sender: AnyObject) {
    print("ViewController - buttonTapped()")
    performSegueWithIdentifier("segue1", sender: self)
}

override func performSegueWithIdentifier(identifier: String, sender: AnyObject?) {
    print("ViewController - performSegueWithIdentifier(): \(identifier)")
}

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
    print("ViewController - shouldPerformSegueWithIdentifier()")
    return true
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    print("ViewController - prepareForSegue(): \(segue.identifier!)")
}
}

DetailViewController.swift:

class DetailViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    print("DetailViewController - viewDidLoad()")
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
}

Here is a screenshot of the storyboard .

Exit (after pressing the button)

ViewController - buttonTapped()
ViewController - performSegueWithIdentifier(): segue1
+4
source share
1 answer

You do not call super - add the following to send a message to the parent class (which in turn will disable segue)

super.performSegueWithIdentifier(identifier, sender: sender)
+4

Source: https://habr.com/ru/post/1612621/


All Articles