2016-06-27 8 views
1

私は2つのビューコントローラを持っています。メインのmainMenuViewControllerと、セカンダリのViewControllerです。すぐにビューコントローラを切り替える

セカンダリビューコントローラにはアラートが表示されることがあり、ユーザーが「キャンセル」を選択すると、mainMenuViewControllerを表示します。

これをコードでどのように達成できますか?

は、これまでのところ、私は次のことを持っている:

 let refreshAlert = UIAlertController(title: "You Win!", message: "Do you want to play again?", preferredStyle: UIAlertControllerStyle.Alert) 

     refreshAlert.addAction(UIAlertAction(title: "Yes", style: .Default, handler: { (action: UIAlertAction!) in 
      self.restart() 
     })) 

     refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in 
      print("Handle Cancel Logic here") 
     })) 

     presentViewController(refreshAlert, animated: true, completion: nil) 

[キャンセル]をクリックするとき、私は(「ハンドルここでキャンセルロジック」)ラインプリントを一時的に印刷されてきましたが、私はmainMenuViewControllerになる必要がありますアクティブ。

これを行うための関数を作成しようとしましたが、機能しません。その理由を教えてください。

@IBAction func quit(sender: UIBarButtonItem) { 
    let vc = mainMenuViewController() 
    self.presentViewController(vc, animated: true, completion: nil) 
} 

+1

をそれはどういう意味「が、それは動作しませんか」? – matt

+0

なぜメッセージを印刷する代わりにpresentViewController関数を使用しないのですか? –

+0

私はこの機能を試してみると、mainMenuViewControllerではなく、すべて黒い画面を表示します。私はpresentViewControllerを使用しますが、アラートを表示するためにボタンからView Controllerの変更をテストしています。長い時間がかかります。ボタンをクリックしてView Controllerを変更すると、そのコードをアラート機能に移動します。 – PabloEscobar

答えて

2

VCクラスでイニシャライザを呼び出すだけでVCを初期化することはできません。 ではなく、正しい方法です。

Main.storyboardというストーリーボードがあるとします。持っていない場合は作成し、MainViewControllerを追加してください。あなたのMainViewController識別子与える必要があります。

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let vc = storyboard.instantiateViewControllerWithIdentifier("mainVC") 

今すぐvcMainViewControllerです:

enter image description here

まず、あなたのストーリーボードを取得する必要があります!あなたはpresentViewControllerでそれを提示することができます。

また、seguesを使用することもできます。

SecondaryViewControllerMainViewControllerをセグに接続します。それに識別子を与え、

performSegueWithIdentifier("some identifier", sender: self) 
+0

後者を使用する場合は、チェックボックスをチェックする必要があります。 – Dopapp

+0

@Dopapp私は間違ってスクリーンショットを撮るときにカーソルを置いてしまいましたが、気づいていませんでした...今すぐ固定! – Sweeper

+0

ありがとう私はそれを実装しましたが、それは間違った方法で遷移します。私は、遷移またはセグの名前が何であるか分かりませんが、システム設定の1つをクリックすると、同じ遷移が得られます。 Bluetooth)を選択し、ナビゲーションバーの左上に戻るボタンが表示されます - 私の画面キャプチャ - https://imgur.com/VAbnPCIを参照してください。画像には – PabloEscobar

0

ストーリーボードスイフト3で呼び出す:

  1. はあなたの2番目のビューコントローラstoryboardIDを与えます。あなたは切り替えたいとき、書き込み、最初のビューコントローラのコードでは
  2. を(その「secondVC」と呼ばれると仮定して):

    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let secondVC = storyBoard.instantiateViewController(withIdentifier: "secondVC") 
    self.present(mainVC, animated: true, completion: nil) 
    
関連する問題