0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[swift]NavigationBarの戻るボタンを押した時の挙動を操る方法

Posted at

#はじめに
Navigationbarの戻るボタンを押した時に、特定の動きをつけたい場合にどうすればよいかの説明を記録しておきたいと思います。
#開発環境

macOS 11.0.1
Xcode version 12.2
Swift version 5.3.1

#実装したいこと
今回はNavigationbarの戻るボタン押した時に、子の画面のTextFiledに入力した値を親に渡すことを実装したいと思います。
戻るボタンを押して子から親画面に移動するということは、言い換えると戻るボタンを押すと親画面が現れると言い換えることができます。この、親画面が現れるという時にはUINavigationControllerDelegateのWillShowが呼ばれます。これを利用して、戻るボタンを押した時の挙動を操りたいと思います。

ChildViewController
import UIKit

                                      //UINavigationControllerDelegateを追加
class ChildViewController: UIViewController,UINavigationControllerDelegate{
  
    @IBOutlet weak var b: UITextField!  
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //NavigationControllerのdelegateはChildViewControllerが委任していることを書く
        navigationController?.delegate = self
        
    }      
        
    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {

       //下記を書くことで親画面であるParentViewControllerの変数にアクセスできる
        if let controller = viewController as? ParentViewController{
       //処理したい内容を書く
       //今回は実装したい、aは親画面の変数にTextFiledであるbに入力されたtextを渡してあげる
            controller.a = b.text!
        }

    }
}

重要なことは
・class宣言時にUINavigationControllerDelegate
・navigationController?.delegate = selfと委任してやる
・willShow内に実行したいことを書く

です!
#参考にしたサイト
参考:navigationbarのバックボタンを押した時に-値を渡したい

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?