いつもお世話になっております。
早速ですが、UIBarButtonItemでpresent用いて画面遷移しているのですが、
画面遷移から戻ってきた時にprepareに入りません、、
printで入ったと記述していますが、それすら入ってません、、
流れとしては、
ハンバーガーメニューをタップ
↓
メニューが出てきて適当な候補をタップ後dismissする
↓
prepareで何を選択したか取得
何が原因でしょうか?
ViewController
1override func loadView(){ 2 super.loadView() 3 4 ・・・色々・・・ 5 6 7 let button = UIBarButtonItem(image: UIImage(named: "bars"), style: .plain, target: 8 self, action: #selector(hambergerButtonTapped(sender:))) 9 10 self.navigationItem.rightBarButtonItem = button 11 12} 13 14 15@objc internal func hambergerButtonTapped(sender: UIBarButtonItem) { 16 17 let sb:UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 18 19 let nextView = sb.instantiateViewController(withIdentifier: "MenuView") as! MenuViewController 20 21 self.present(nextView, animated: false,completion: nil) 22 23} 24 25//prepare 26override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 27 print("入った") 28 guard let identifier = segue.identifier else { 29 // identifierが取れなかったら処理やめる 30 return 31 } 32 let controller = segue.destination as! MenuViewController 33 34 // 遷移先で処理を終えた後の処理をここで書く 35 controller.resultHandler = { val in 36 print(val) // テスト 37 } 38} 39
MenuViewController
1var resultHandler: ((String) -> Void)? 2 3 ・・・色々・・・ 4 5//タップされた時呼ばれる 6func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 7 8 let val:String = TODO[indexPath.row][1] //hogehoge 9 10 let preNC = self.presentingViewController as! UINavigationController 11 12 let preVC = (preNC.viewControllers[preNC.viewControllers.count - 1] as! ViewController).self 13 14 if let handler = self.resultHandler { 15 handler(val) 16 } 17 18 dismiss(animated: false, completion: nil) 19}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。