異なるStoryboardのViewControllerに遷移する方法です。
Another.storyboardを追加して、Main.storyboardから遷移することを想定しています。
また、Another.storyboardのViewControllerはカスタムクラスのAnotherViewControllerになります。
<h3> 実行環境 </h3>
Swift:5.0
Xcode:10.2.1
<h3>異なるStoryboardへの遷移方法</h3>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import UIKit class ViewController: UIViewController { @IBOutlet weak var changeButton: UIButton! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } @IBAction func changeStoryboard(_ sender: Any) { //Storyboardを指定 let anotherStoryboard:UIStoryboard = UIStoryboard(name: "Another", bundle: nil) //生成するViewControllerを指定 let anotherViewController:AnotherViewController = anotherStoryboard.instantiateInitialViewController() as! AnotherViewController //表示 self.present(anotherViewController, animated: true, completion: nil) } } |
シンプルなように見えて、初めてやると結構ひっかかって焦りました。。
まず、Another.Storyboardと大文字でStoryboardを書いてしまうとエラーになります。小文字の.storyboardが正しいです。
UIStoryboard(name: “Another”, bundle: nil)の部分は、Storyboardファイルの名前を入れます。StoryboardIDと勘違いして入れないように。
また、instantiateInitialViewController()の部分では、Storyboard上でIsInitialViewControllerをチェックしておかないとnilチェックでひっかかるので注意です。