2017-10-21 10 views
0

私はiosの開発を学んでいて、2つのビューを持つアプリケーションを作成しようとしています。それぞれのボタンは、押されたときに別のビューに送信されます。私はストーリーボードに2つのシーンを設定し、アクションにボタンを接続しました。私が読んだことによると、instantiateViewControllerと識別子を使用すると、ビューを変更するのに十分なはずです。しかし、私はシミュレータを実行すると、最初のビューが表示されますが、ボタンをクリックしても効果はありません。私もエラーメッセージが表示されません。ビューコントローラを変更するSwift 3

@IBAction func SwitchViews(_ sender: UIButton) { 
    //Switch view controllers 
    let vc = storyboard?.instantiateViewController(withIdentifier: "second") 
    navigationController?.pushViewController(vc!, animated: true) 
} 
+0

あなたが最初のビューコントローラ –

+0

にナビゲーションコントローラが埋め込まれている私は、コンテナのような他の二つのビューを保持するということではありませんでしたか? –

+0

ナビゲーションコントローラーでviewcontrollerをプッシュしている場合は、最初のビューコントローラーにそれを埋め込んで問題を解決する必要があります –

答えて

2

あなたはストーリーボードをナビゲーションコントローラに埋め込んでいますか?あなたのコードナビゲーションコントローラでは、コントローラがナビゲーションコントローラを取得できません。

ナビゲーションコントローラに最初のストーリーボードを埋め込む必要があります。それは機能します。Xcode>Editor>Embed In>Navigation Controllerで行うことができます。

1

ナビゲーションビューを使用していないアプリケーションを開発しようとしている場合は、ちょっとだけお勧めです。単一のビューアプリケーションで複数のビューへの接続を行う正しい方法は、次のとおりです。あなたのストーリーボードにViewControllerを追加

ステップ2 - - ファイルからココアタッチクラスを作成します - 新しい - 私は段階的に

ステップ1にそれを説明しますファイル(コマンド+ Nも、トリックを行います)

ココアのタッチクラスを確認してください !!!

ステップ3 - UIViewControllerのサブクラスとしてクラス名を入力します。ビューが行うものと一意にして、コードが誰にとってもきれいに見えるようにします。

ステップ4 - 次にヒットして終了します。ストーリーボードに移動し、アイデンティティインスペクタ内で作成したビューコントローラにクラス名を追加し、ストーリーボード識別子の名前を追加します。

ステップ5 - Swiftファイル内のアクションにTouchUpInsideとしてリンクし、次のコードを追加してください

@IBAction func startButtonPressed(_ sender: UIButton) { 

    let controllerVariable = self.storyboard?.instantiateViewController(withIdentifier: "storyboardIdentifier") as! ViewControllerClassName 

    self.present(controllerVariable, animated: true, completion: nil) 

} 

これは、シングルビューアプリケーションを作成し、複数の画面でアプリケーションを構築するためのトリックを行う必要があります。

しかし、あなたのアプリがナビゲーション項目とナビゲーションボタンのベストプラクティスを持つナビゲーションバーのようなIOSのデフォルトのナビゲーションコントローラスタイルを使用する場合、navコントローラを使用することです。

上記の手順に従って、ユーザーインターフェイスのデザイン方法を完全に制御できます。

・ホープ、このことができます:)

関連する問題