Swiftで、ボタンクリックで別のViewを表示させる方法

Swiftで、ボタンクリックで別のViewを表示させる方法

Swiftでボタンクリックで別のViewを表示させるには、通常UIViewController間での遷移を行います。
以下は、UIButtonを使って別のUIViewControllerを表示する基本的な方法です。

1. Storyboardを使用する場合

  • まず、UIButtonをInterface Builderに配置し、遷移先のUIViewController(例えば、新しいView Controller)をStoryboardで作成します。
  • その後、UIButtonにアクションを設定します。
// 例: 現在のViewController (ViewController.swift)
import UIKit

class ViewController: UIViewController {
    // ボタンがタップされた時に呼ばれるメソッド
    @IBAction func showNextViewController(_ sender: UIButton) {
        // StoryboardIDを使って次のViewControllerをインスタンス化
        if let nextViewController = storyboard?.instantiateViewController(withIdentifier: "NextViewController") {
            // 現在のViewControllerから次のViewControllerへ遷移
            navigationController?.pushViewController(nextViewController, animated: true)
        }
    }
}
  • この例では、ボタンがクリックされると、NextViewControllerというStoryboardIDを持つViewControllerが表示されます。

遷移はpushViewControllerを使用して行います。

2. プログラム的に画面遷移を行う場合

Storyboardを使わずに、完全にコードで画面遷移を管理する方法もあります。
例えば、以下のようにUIViewControllerを直接インスタンス化して遷移を行います。

// 例: 現在のViewController (ViewController.swift)
import UIKit

class ViewController: UIViewController {
    // ボタンがタップされた時に呼ばれるメソッド
    @IBAction func showNextViewController(_ sender: UIButton) {
        // 次のViewControllerをインスタンス化
        let nextViewController = NextViewController()
        // 現在のViewControllerから次のViewControllerへ遷移
        navigationController?.pushViewController(nextViewController, animated: true)
    }
}
  • この場合、NextViewControllerはコードで作成したUIViewControllerです。

NextViewControllerがStoryboard上で定義されていない場合でも、pushViewControllerで遷移できます。

3. Modal遷移を使用する場合

モーダルで画面を遷移させたい場合は、presentメソッドを使用します。

// 例: 現在のViewController (ViewController.swift)
import UIKit

class ViewController: UIViewController {
    // ボタンがタップされた時に呼ばれるメソッド
    @IBAction func showNextViewController(_ sender: UIButton) {
        // 次のViewControllerをインスタンス化
        let nextViewController = NextViewController()
        // モーダルとして次のViewControllerを表示
        present(nextViewController, animated: true, completion: nil)
    }
}
  • presentを使用すると、次のViewControllerがモーダル表示され、閉じるにはdismissを呼び出します。

これらの方法を利用することで、ボタンクリックで簡単に別のViewControllerを表示させることができます。