Frank Schmitt Frank Schmitt - 3 months ago 39
Swift Question

prepare(for:sender:) not getting called

I downloaded Apple's MyLife sample project and attempted to build and run it using Xcode 8 beta 6.

There are two places where a view controller has implemented the

prepare(for:sender:)
call to do stuff before a storyboard segue is performed.

override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {


That line has an error saying "Method does not override any method from its superclass".

If I remove the override, the app builds but the method isn't called when it should be.

Answer

The method signature has changed. sender is now Any? instead of AnyObject?

override func prepare(for segue: UIStoryboardSegue, sender: Any?)

This is to coincide with the changes to how Swift is bridged with obj-c, described here under "New in Xcode 8 beta 6 - Swift Compiler"