I have these ViewControllers added in storyboard:
None is connected with a
Edit 2:
As someone mentionned in the comments, I am unable to reproduce the problem with your sample project. One thing I noticed though, is that your project is configured with a deployment target that is iOS 8.3. Here are the steps to fix that :
Step 1: Select your project in Xcode's Project Navigator. Step 2: Make sure you select your project in the left column of the project editor and not the target Step 3: Select the Build Settings tab Step 4: Modify the iOS Deployment Target to iOS 7.1 or iOS 7.0 depending on which OS you are testing with. Step 5: Build and run.
Hopefully this will help you out.
Edit:
Step1. Select your UIViewController
with the label 14 and in the third tab of the right pane of Xcode, enter a Storyboard ID such as vc14.
Step2. Select your UIViewController
with the label 12 and in the same tab, enter a custom class such as ViewController
.
Step3. Remove the trigger segue action from your Button and replace it by a @IBAction
in ViewController
Step4. Add this code to your @IBAction
in ViewController
:
@IBAction func push(sender: AnyObject) {
var vc14 = self.storyboard?.instantiateViewControllerWithIdentifier("vc14") as! UIViewController
vc14.view.layoutIfNeeded()
self.navigationController?.pushViewController(vc14, animated: true)
}
Explanation:
The weird animation is occurring because layout has never occurred before the segue pushes the UIViewController
in the UINavigationController
. iOS 7 didn't protect appropriately against such a scenario by manually calling layoutIfNeeded
before entering an animation block and when the layout finally occurs, it triggers implicit animations. In the code sample I have given you, I manually trigger layout before pushing the ViewController
on the stack in order to avoid this issue.