miyazaki-dev

【Swift】ナビゲーションバーで画面遷移

Swift

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

class AppDelegate: UIResponder, UIApplicationDelegate {
  var window: UIWindow?
  
  
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
	        
    // 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  
  }
}

以上!