下記のオペレーションを実現するためにはどのように実装するべきかをご教示いただければと思います。
###環境
swift3
###前提・実現したいこと
【画面構成】
・メイン画面
・モーダル画面1
・モーダル画面2
【実現したいオペレーション】
<1>メイン画面からモーダル画面1をモーダル表示
<2>モーダル画面1で次へボタンを押下
<3>モーダル画面1を閉じる
<4>モーダル画面2をモーダル表示←これが実現できないです
【※追加情報】
<3>で閉じる必要はあります。モーダル表示する際、背景を透過しています。<4>で画面を表示した際に、<3>の画面を背景に見せたくありません。
NavigationControllerは未使用です。
###発生している問題・エラーメッセージ
<3>のモーダル画面1を閉じるところまではできるのですが、delegateで呼び出したメイン画面のメソッドで「performSegueメソッド」や「presentメソッド」を実行してもモーダル画面2が呼び出せません。
初めて投稿します。至らぬ点などありましたらお知らせください。宜しくお願いします。
swift
1 2import UIKit 3 4class ViewController: UIViewController, Modal1ViewControllerDelegate { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 } 9 10 override func didReceiveMemoryWarning() { 11 super.didReceiveMemoryWarning() 12 } 13 14 @IBAction func goBack(_ segue:UIStoryboardSegue) {} 15 16 @IBAction func goNext(_ sender:UIButton) { 17 let next = storyboard!.instantiateViewController(withIdentifier: "nextView") 18 self.present(next,animated: true, completion: nil) 19 } 20 21 // セグエ遷移用に追加 ↓↓↓ 22 @IBAction func goNextBySegue(_ sender:UIButton) { 23 performSegue(withIdentifier: "nextSegue", sender: nil) 24 } 25 26 func goToNextPage() { 27 print("Modal1ViewControllerのdelegate") 28 performSegue(withIdentifier: "nextSegue2", sender: nil) 29 } 30 31 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 32 if(segue.identifier == "nextSegue"){ 33 print("aaa") 34 let modal1ViewController = segue.destination as! Modal1ViewController 35 modal1ViewController.delegate = self 36 }else if(segue.identifier == "nextSegue2"){ 37 print("bbb") 38 } 39 } 40}
swift
1import UIKit 2 3protocol Modal1ViewControllerDelegate: class { 4 func goToNextPage() 5} 6 7class Modal1ViewController: UIViewController { 8 weak var delegate: Modal1ViewControllerDelegate? 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 } 13 14 override func didReceiveMemoryWarning() { 15 super.didReceiveMemoryWarning() 16 } 17 18 @IBAction func didTappedNextPage(_ sender: Any) { 19 self.dismiss(animated: true, completion: nil) 20 self.delegate?.goToNextPage() 21 } 22}
swift
1import UIKit 2 3class Modal2ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 } 8 9 override func didReceiveMemoryWarning() { 10 super.didReceiveMemoryWarning() 11 } 12}
回答1件
あなたの回答
tips
プレビュー