[UMC-iOS]委任モードを使用して画面間でデータを転送
委任モードを使用して画面間でデータを転送😀
2つのview controllerを作成し、
最初の画面にlabelと<次の画面>ボタンを作成します.
2番目の画面にtextFieldと<前の画面>ボタンを作成します.
最初の画面で<次の画面>ボタンを押すと画面を切り替え、2番目の画面でtextFieldにテキストを入力し、<前の画面>ボタンを押すと、最初の画面のlabelが入力値になります.
(画面間データ転送)画面遷移概念 protocol delegate 最初のビューコントローラ-ビューコントローラクラスに関連付けられます
2番目のビューコントローラ-SecondView Controlクラスに関連付けられています ChangeLabelDelegateプロトコルを発表します. var delegate : ChangeLabelDelegate
作業を委任する委任変数を宣言します.この委任変数を使用すると、委任されたオブジェクトがプロトコルの機能を使用していることを確認できます. nextVC.previousViewController = self
このviewControllerをnextVC(次の画面)の前の画面に設定します. class SecondViewController: UIViewController, ChangeLabelDelegate
ChangeLabelDelegateプロトコルを遵守する必要があります.プロトコルのメソッドも完了します.
-func do Change() の作成 var previousViewController: ViewController?
ViewControllerタイプ変数 、フルスクリーン表示について previousViewController?.delegate = self
PreviousViewControllerは自分が私にやらせたことをすると宣言した. 委託側はプロトコルを宣言し、委託側は委任作業の委託変数を宣言する.
委任された側は、自分が委任されることを表明し、合意方法を完了しなければならない.
<最初の画面>
<2画面目>
<最初の画面に戻る>-最初の画面のラベルが変更されました
Udemy-誰もが真似できるクローンコード
2つのview controllerを作成し、
最初の画面にlabelと<次の画面>ボタンを作成します.
2番目の画面にtextFieldと<前の画面>ボタンを作成します.
最初の画面で<次の画面>ボタンを押すと画面を切り替え、2番目の画面でtextFieldにテキストを入力し、<前の画面>ボタンを押すと、最初の画面のlabelが入力値になります.
(画面間データ転送)
2番目のビューコントローラ-SecondView Controlクラスに関連付けられています
//ViewController.swift
import UIKit
protocol ChangeLabelDelegate {
func doChange()
}
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
//일을 위임할 delegate 변수 - 이 delegate가 ChangeLabelDelegate를 시킬 수 있음
var delegate : ChangeLabelDelegate?
//다음 화면으로 버튼을 누르면
@IBAction func ButtonNextVC(_ sender: UIButton) {
//nextVC 인스턴스화 후 SecondViewController으로 다운캐스팅해줌
guard let nextVC = storyboard?.instantiateViewController(withIdentifier: "SecondVC") as? SecondViewController else {
return
}
//지금 이 view controller을 nextVC(다음화면)의 이전화면으로 설정
nextVC.previousViewController = self
//다음 화면으로 넘어가기
self.present(nextVC, animated: true, completion: nil)
}
}
作業を委任する委任変数を宣言します.この委任変数を使用すると、委任されたオブジェクトがプロトコルの機能を使用していることを確認できます.
このviewControllerをnextVC(次の画面)の前の画面に設定します.
import UIKit
//프로토콜 메소드를 준수해라
class SecondViewController: UIViewController, ChangeLabelDelegate {
func doChange() {
//이전화면에 있는 label의 텍스트에 dataTextField의 text값을 넣겠다
previousViewController?.label.text = self.dataTextField.text
}
var text: String?
var previousViewController: ViewController?
//전 화면이 어떤 것인지 알기 위해 설정한 ViewController 타입 변수
@IBOutlet weak var dataTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
//previousViewController이 시키는 일을 자신이 하겠다고 선언
previousViewController?.delegate = self
}
//이전 화면으로 버튼을 누르면
@IBAction func buttonDIsmiss(_ sender: UIButton) {
doChange() //do change 함수를 호출한당
self.dismiss(animated: true, completion: nil)
}
}
ChangeLabelDelegateプロトコルを遵守する必要があります.プロトコルのメソッドも完了します.
-func do Change()
ViewControllerタイプ変数
PreviousViewControllerは自分が私にやらせたことをすると宣言した.
委任された側は、自分が委任されることを表明し、合意方法を完了しなければならない.
<最初の画面>
<2画面目>
<最初の画面に戻る>-最初の画面のラベルが変更されました
Udemy-誰もが真似できるクローンコード
Reference
この問題について([UMC-iOS]委任モードを使用して画面間でデータを転送), 我々は、より多くの情報をここで見つけました https://velog.io/@vvkkiie/UMC-Protocol-로-화면-간-데이터-전달하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol