60101


XcodeでiPhoneアプリを作成しております。  
Main.storyboard上にあるViewControllerにあるボタンを押下した際に、Index.storyboard上にあるTabView
Contollerへコードで画面遷移をさせたいです。

こちらがMain.storyboard上にあるViewControllerです。  
Custom ClassのClassは「ViewController」、storyboardIDは「Login」です。  
画面遷移させるボタンのClass名は「Loginbutton」です。

[![ViewController](https://i.stack.imgur.com/DLIVK.png)](https://i.stack.imgur.com/DLIVK.png)

こちらがIndex.storyboard上にあるTabView Contollerです。  
Custom Classのクラスは「TabViewController」、storyboardIDは「show」です。

[![TabViewController](https://i.stack.imgur.com/Fijur.png)](https://i.stack.imgur.com/Fijur.png)

ViewControllerから、このTabViewControllerに画面遷移することで、初期表示されているタブ左側の画面のViewCpontroller「Item1」を表示したいです。  
こちらが表示したい画面の、「Item1」というClass名を付けたViewControllerです。  
TabViewControllerに画面遷移することでItem1が表示されると考えたため、  
StoryboardIDは付けていません。

[![Item1](https://i.stack.imgur.com/Iv6uK.png)](https://i.stack.imgur.com/Iv6uK.png)

文末に載せたサイトを参考に、ViewController.swiftに以下のコードを書きましたが、シュミレーターで表示した際にボタンを押下すると、アプリがクラッシュしてしまいました。

[code]

    import UIKit
    class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    @IBAction func Loginbutton(_ sender: Any) {
    
        let storyboard: UIStoryboard = UIStoryboard(name: "Index", bundle: nil)
    
        let nextView = storyboard.instantiateViewController(withIdentifier: "show") as! TabViewController
    
        self.present(nextView, animated: true, completion: nil)   
    }
    }
    
[/code]

コード9行目を以下のように書き換えてデバッグを行うと、nilが返されます。

[code]

    let nextView = storyboard.instantiateViewController(withIdentifier: "show") as? TabViewController
    
[/code]

TabViewController.swiftには以下の記述をしています。

[code]

    import UIKit
    class TabViewController: UITableView {
    }
    
[/code]

このようなエラーを起こさずに、画面遷移を行うにはどういった修正を加えればよろしいでしょうか。  
ご教授いただけますよう、お願いいたします。

[参考にしたサイト]  
<https://qiita.com/Simmon/items/6c3d6bcd6bfffbfd970d>  
<https://capibara1969.com/684/>  
<https://yuu.1000quu.com/screen_transition_in_swift>


CC BY-SA 4.0
2019-10-26T14:04:24.587
59997
2019-10-30T02:31:32.690
2019-10-27T09:47:06.110
36178
36178
question
swift xcode storyboard
Xcode ViewControllerから別ストーリーボードにあるTabViewControllerへの画面遷移をコードでしたい


おそらく`Use Storyboard ID`にチェックを入れているのが原因です。  
チェックを外し`Storyboard ID`に`Index`、`Restoration ID`に`show`と入れれば動作するかもしれません。

または、TabViewControllerがある.storyboard内にまだInitialViewControllerがない場合は、TabViewControllerの`Attributes
Inspector`を開き`Is Initial View Controller`にチェックを入れた上、下記のコードを試してください。  
[![Attributes
Inspector](https://i.stack.imgur.com/voFeF.png)](https://i.stack.imgur.com/voFeF.png)

[code]

    let storyboard: UIStoryboard = UIStoryboard(name: "Index", bundle: nil)
    guard let vc = storyboard.instantiateInitialViewController() else {
        print("vc is nil")
        return
    }
    guard let nextView = vc as? TabViewController else {
        print("nextView don't cast to TabViewController.")
        return
    }
    self.present(nextView, animated: true, completion: nil)   
    
[/code]


CC BY-SA 4.0
2019-10-30T02:31:32.690
60101
2019-10-30T02:31:32.690
36411
59997
answer