IT SHOULD BE TRAINED BY A SINGLE SEGEWAY TWICE Once in the code and once from the interface constructor, but both at the same time ...
I was getting the same error as everyone else. Only my problem was that I accidentally shot the same session twice. Once from the interface constructor and once from within my code.
I have a UITableView. When a cell is selected, the segue in interface script is fired. Heres my problem, I had a segue setting to be fired directly by clicking CELL ITSELf, the built-in interface constructor, and then in my code, which I had in the didSelectRowAtIndexPath file, which could burn the same ... so .. .
[self performSegueWithIdentifier:@"MySegue" sender:tableView];
This means that when didSelectRowAtIndexPath is called because a row has been selected, it starts segue with the above line of code. Then the interface builder also runs segue because it is directly connected to the cell object in the interface builder. Stop the interface builder from directly starting segue mode. You must connect segue from the top of the view controller, not nested inside, exiting the cell itself.
So, if you have this problem for the same reason as mine, that is, you are invoking the same session twice, you can fix this by canceling the connection to CELL DIRECTLY, before your segue and having the segue connection start at the top parts of the table hierarchy in IB, not nested inside the cell. Connect the segue to the View Controller itself, before moving on. If you did it right, when you select segue, it should highlight the ENTIRE view it comes from, not just the cell.
Currently, the apple documentation is thus in the executeSegueWithIdentifier: sender: reference file:
Applications usually do not need to run segues directly. Instead, you configure an object in Interface Builder that is associated with a view controller, such as a control built into its view hierarchy, to run segue. However, you can call this method to invoke segue programmatically, perhaps in response to some actions that cannot be specified in the storyboard resource file. For example, you can call it from a special action handler used to handle shaking events or an accelerometer.
In my case, I have a search button for my UITableView, and whether it was necessary to call segue when there is a search result table, or a regular table lookup, it was necessary to determine. Therefore, I had to immediately call a shogi.
So, remove the inline control from the interface builder and just bind it to the view controller itself, then activate segue in your code!
Now, no more double transitions! And no more mistakes.
Hope this helps, I spent several hours doing this.