-
[iOS] Delegate를 이용한 데이터 전달iOS 2023. 9. 28. 20:10
아래 영상처럼 Delegate패턴을 통하여 이전화면으로 값 전달해보는 방법을 알아보자!
: "닉네임 변경" 버튼을 클릭하면 변경할 수 있는 화면이 나오고 닉네임을 변경한 뒤에 확인 버튼을 누르면 그 값을 전달해야한다!

→ 이 화면들 속에서 데이터를 전달할 것이다!
1. EditProfile
: 데이터를 받을 라벨을 추가해준다!
@IBOutlet weak var EditProfileLabel: UILabel! var EditProfile_nickName = UserDefaults.standard.string(forKey: "nickname") // 닉네임을 전달받아 저장할 변수: "닉네임 변경" 버튼을 클릭해서 다음 화면으로 넘어간다. (+ 위임자랑 프로토콜을 채택해준다!)
@IBAction func EditProfileNameDidTap(_ sender: Any) { guard let EditProfileName = self.storyboard?.instantiateViewController(withIdentifier: "EditProfileName") as? EditProfileName else{return} EditProfileName.delegate = self EditProfileName.modalPresentationStyle = .fullScreen present(EditProfileName, animated: true, completion: nil) }+ 추가로 프로토콜을 준수하기 위해 메서드를 정의 해준다!
extension EditProfile: SendData { func send(_ vc: UIViewController, Input EditProfile_nickName: String?) { EditProfileLabel.text = EditProfile_nickName } }: 상속받는 protocol 선언
// // EditProfileDelegateProtocol.swift // HandsUp // // Created by 김민경 on 2023/02/17. // import Foundation import UIKit protocol SendData { func send(_ vc: UIViewController, Input EditProfile_nickName : String?) }: ViewDidLoad()에서 전달받은 값 라벨 text에 저장해준다!
EditProfileLabel.text = EditProfile_nickName!2. EditProfileName
: 타입이 protocol 인 delegate를 선언해준다!
var delegate : SendData?: delegate 에서 사용할 기능을 전달한다.
func textFieldShouldReturn(_ textField: UITextField) -> Bool { delegate?.send(self, Input: EditProfileNameTextField.text) self.presentingViewController?.dismiss(animated: true, completion: nil) return true }[참고]
https://github.com/regi93/ios_practice
GitHub - regi93/ios_practice
Contribute to regi93/ios_practice development by creating an account on GitHub.
github.com
[iOS] 화면간 데이터 전달하기
다운 캐스팅 프로퍼티 접근, delegate, weak var, AnyObject, segueway prepare overriding
velog.io
'iOS' 카테고리의 다른 글
[iOS] Button Toggle 기능 구현하기 (0) 2023.09.28 [iOS] String 문자열 자르기! (0) 2023.09.28 [iOS] CollectionView로 CardList 만들기 (0) 2023.09.28 [iOS] Snapkit을 이용한 UI 구성 (0) 2023.09.28 [iOS] 알림창(UIAlertController) 색상 변경 (0) 2023.09.28