ビューコントローラーとナビゲーションコントローラーを接続するために、ストーリーボードにセグエを表示(プッシュなど)したい。その後、ビューコントローラーのナビゲーションバーが正しく表示されます。例:詳細を表示または現在のモダリティを使用すると、ナビゲーションバーが消えます
しかし、私はセグエアニメーションを望んでいません。 Xcodeは次のような警告を出します:「iOS9.0より前のセグエアニメーションの無効化は利用できません」
そして、iOS7.0または8.0の展開ターゲットが欲しい
どうすればこれを解決できますか?
前もって感謝します。
セグエを実行する前と再度有効にした後、アニメーションを無効にすることができます。
UIView.setAnimationsEnabled(false)
self.performSegueWithIdentifier("next", sender: nil)
UIView.setAnimationsEnabled(true)
これにより、アニメーションなしでセグエが実行されます。
このスレッドでSwift回答を使用して、カスタムセグエを作成しました。
アニメーションなしでxcodeにセグエをプッシュ
そう:
class ShowNoAnimationSegue: UIStoryboardSegue {
override func perform() {
let source = sourceViewController as UIViewController
if let navigation = source.navigationController {
navigation.pushViewController(destinationViewController as UIViewController, animated: false)
}
}
}
また、Xcodeのカスタムセグエの属性インスペクターで、[アニメーション]チェックボックスをオンにしました(はい)。警告が消えたので、私は自分の質問に答えています。
それが耐久性のある解決策であるかどうかはまだわかりません。
コードでアニメーションの状態を切り替えたい場合は、ストーリーボードでセグエを複製できます。識別子は異なり、出発地と目的地は同じです。次に、テーマの1つをアニメートし、もう1つをアニメートしないようにします。次に、目的の識別子を使用してperformSegueを実行します。
class MyNavigationController : UINavigationController {
var firstTransitionAnimated : Bool = true // or false, based on initialization
override func viewDidLoad() {
super.viewDidLoad()
var properSegue = firstTransitionAnimated ? "animated_segue" : "not_animated_segue"
self.performSegue(withIdentifier: properSegue, sender: self)
}
}