ホーム

Swift3でカスタムクラスを使って画面遷移

0
0

 

説明

画面遷移の為のカスタムクラスを作ってみました。引数に自分のStoryboardの名前を入れると簡単にpresentviewControllerで画面遷移ができます!New > File > Swift File を選んでカスタムクラスを実装して使います。

注意

ちなみに、このクラスでは、同じMain Storyboardの中にあるViewには飛べません。あくまでも別のStoryboardにあるViewControllerにしか飛べません。同じStoryboardの中にあるViewControllerに飛ぶ為のクラスはまた暇を見つけて作ろうと思いました。

使い方

//右に遷移
CustomScreenTransition().Right(StoryboardName: "YourStoryboardName")

//左に遷移
CustomScreenTransition().Left(StoryboardName: "YourStoryboardName")

実装

import UIKit

public class CustomScreenTransition: UIViewController {

    public func Right(StoryboardName: String) {

        let storyboard: UIStoryboard = UIStoryboard(name: (StoryboardName), bundle: nil)
        let nextView = storyboard.instantiateInitialViewController()

        let transition = CATransition()
        transition.duration = 0.5
        transition.type = kCATransitionPush

        transition.subtype = kCATransitionFromRight
        let appDelegate = UIApplication.shared.delegate as? AppDelegate
        appDelegate?.window?.layer.add(transition, forKey: kCATransition)
        appDelegate?.window?.rootViewController = nextView!


    }

    public func Left(StoryboardName: String) {

        let storyboard: UIStoryboard = UIStoryboard(name: StoryboardName, bundle: nil)
        let nextView = storyboard.instantiateInitialViewController()

        let transition = CATransition()
        transition.duration = 0.5
        transition.type = kCATransitionPush

        transition.subtype = kCATransitionFromLeft
        let appDelegate = UIApplication.shared.delegate as? AppDelegate
        appDelegate?.window?.layer.add(transition, forKey: kCATransition)
        appDelegate?.window?.rootViewController = nextView!

    }

}

参考

Swift - Accessing AppDelegate window from viewController

画面遷移のための関数を別のクラスから呼びたい

Pocket
LinkedIn にシェア

  • この記事を書いた人
  • 最新記事

藤沢瞭介(Ryosuke Hujisawa)

りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

-ホーム

Copyright© off.tokyo , 2021 All Rights Reserved Powered by AFFINGER5.