【Swift4、Xcode9.2】ナビゲーションバーで画面遷移

アプリでは必須になる、ナビゲーションバーをつけて、ページ移動をメインストーリーボードなし(プログラミングのみ)で行うためのサンプルコードとなります。

rootViewにナビゲーションを設定

AppDelegate.swiftを以下のように設定

class AppDelegate: UIResponder, UIApplicationDelegate {
	var window: UIWindow?


    	func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
	        // Override point for customization after application launch.
	        
	        // rootViewにしたいViewControllerのインスタンスの生成
	        let viewController: ViewController = ViewController()
	        
	        // ナビゲーションコントローラの生成
	        let myNavController: UINavigationController = UINavigationController(rootViewController: viewController)
	        
	        // rootViewの設定
	        self.window?.rootViewController = myNavController
	        
	        // NavigationControllerを表示
	        self.window?.makeKeyAndVisible()
	        
	        return true
	}
}

ViewController

メインとなるViewControllerにボタンを作成し、次ページに行くように設定

class ViewController: UIViewController {
	var newPageBtn:UIButton!
	
	override func viewDidLoad() {
		super.viewDidLoad()
        
	        // ナビゲーションバーのタイトルを設定
	        self.navigationItem.title = "Navバータイトル"
	        self.view.backgroundColor = UIColor.white
	        
	        // ボタンの作成
	        self.newPageBtn = UIButton()
	        self.newPageBtn.frame = CGRect(x: 150, y: 100, width: 100, height: 50)
	        self.newPageBtn.backgroundColor = UIColor.red
	        self.newPageBtn.setTitle("次ベージへ", for: .normal)
	        self.newPageBtn.addTarget(
	            self,
	            action: #selector(moveToNextPage(sender:)),
	            for: .touchUpInside
	        )
	        
	        self.view.addSubview(self.newPageBtn);
	}

	@objc func moveToNextPage(sender: UIButton){
		// 次ページのインスタンスを生成
	        let secondViewController = SecondViewController()
	        // 次ページへ移動
	        self.navigationController?.pushViewController(secondViewController, animated: true)
	}
}

次ページ(SecondViewController)の作成

class SecondViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    
        // Controllerのタイトルを設定
        self.navigationItem.title = "Navバータイトル2"
        
        self.view.backgroundColor = UIColor.green
    
    }
}
以上!