Search

[정리] 27기 SOPT 1주차 과제 정리

 SecondViewController
@IBAction func touchUpDismiss(_ sender: Any) { guard let dvc = self.presentingViewController as? ViewController else { return } dvc.editLabels(part: partTextField.text ?? " ", name: nameTextField.text ?? " ") dismiss(animated: true, completion: nil) }
Swift
복사
 ViewController
func editLabels(part: String, name: String) { partLabel.text = part statusLabel.text = "\(name) 님 안녕하세요 ~~ 🥰" }
Swift
복사
1.
SecondViewController에서 로그인 버튼을 누르는 경우, ViewController가 presenting 되면서 ViewControllereditLabels라는 함수를 call 한다.
2.
TextField.text의 값이 editLabelspartname으로 전달된다.
3.
ViewControllerpartLabel.text값과 statusLabel.text로 넣어져서 ViewControllerdismiss 됐을 때 label의 값이 모두 변경된다.
 ViewController
@objc func touchUpPresent() { let loginVc = LoginViewController() let vc = UINavigationController(rootViewController: loginVc) vc.modalPresentationStyle = .fullScreen loginVc.editLabelText = { part, name in self.partNameLabel.text = part self.introduceLabel.text = "\(name) 님 안녕하세요!!!😂" } present(vc, animated: true, completion: nil) }
Swift
복사
 LoginViewController
var editLabelText: ((String, String) -> ())? @objc func touchUpLogin() { editLabelText?(partTextField.text ?? " ", nameTextField.text ?? " ") dismiss(animated: true, completion: nil) }
Swift
복사
1.
ViewController에서 바로 LoginViewController를 사용하면 NavigationController가 present되지 않고 NavigationController만 present하면 빈 NavigationController가 present되기 때문에 UINavigationController와 함께 rootViewController를 LoginViewController로 정해주어 LoginViewController가 present될 수 있게 하였다.
2.
LoginViewController에서 editLabelText라는 closure를 선언해서 ViewController로 TextField.Text값을 전달해줬다.