Programing Language/iOS(Swift)

(iOS) 화면간 데이터 전송 방법

Jude_Song 2019. 10. 17. 18:01
728x90
반응형

ViewController(A) 에서 -> page2(B)로의 데이터 이동 

 

1. Segue화면 전환 방법으로 데이터 전송방법 A->B

  •  ViewController(A) 클래스 

 

class ViewController: UIViewController {

  @IBOutlet weak var input_name: UITextField!
  var name_text : String = ""


      @IBAction func move_page2btn(_ sender: Any)
      {



          //segue를 이용한 데이터 전달   <- 스타일보드에서 무조건 segue작업해줘야함
          name_text = input_name.text!
          performSegue(withIdentifier: "name", sender: self) //여기서 "name"은
          						스토리보드에서 segue를 연결후
                                                             Identifier에 지정한 명칭이다.

      }



      override func prepare(for segue: UIStoryboardSegue, sender: Any?)
       {
          // segue를 이용한 데이터 전달
          let viewController = segue.destination as! page2
          //page2 클래스에서 final_name 이라는 변수가 있다 => var final_name = ""
          viewController.final_name = name_text

       //여기서 as는 자바에서 class에 상속(extent)과 같은 개념이다.
       //

      }
}

 

2. 코드 화면 전환으로 데이터 전송방법 A->B

  •  ViewController(A) 클래스 
class ViewController: UIViewController {

    @IBOutlet weak var input_name: UITextField!
    var name_text : String = ""
    
        
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    @IBAction func move_page2btn(_ sender: Any)
    {
         // 코드를 통한 화면 전환
        if let viewController = self.storyboard?.instantiateViewController(withIdentifier: "page2") 
        			as? page2 //여기서 as는 자바에서 class에 상속(extent)과 같은 개념이다.
        {
            
            name_text = input_name.text!
            viewController.final_name = name_text
            viewController.modalTransitionStyle = UIModalTransitionStyle.coverVertical
            self.present(viewController, animated: true, completion: nil)
            
            
        }
        
    }
    
}

 

3. Protocol 방식으로 데이터 전송방법 B->A

- B 페이지

-A 페이지

 

참고영상 : https://www.youtube.com/watch?v=7fbTHFH3tl4

-프로토콜 방식으로 데이터를 전송하는 것은 A뷰에서 B뷰로 화면 전환 후에 B뷰에서 dismiss 또는 네비게이션 이동 popViewController으로 인해 다시 A화면으로 돌아갈때 사용된다.

 

- 프로토콜은 B뷰에서 선언후 값을 넣어주고 A 뷰에서는 B 프로토콜에서 선언한 것을 상속받고 오버라이드 받은 다음에 스토리보드를 담은 변수에 B에서 선언한 delegate 함수를 메서드로 사용해서 self 로 받아준뒤 받아온 값을 사용한다.

(자세한사항은 B 클래스에서 프로토콜 선언부터 코드 끝까지 보고 A클래스에서 프로토콜을 상속 받은 다음부터 자세히 보기 바란다.)

------------------------------------------------------------------

 

코드 참조하면서 공부!!!

 

참고 스텍오버 플로우 자료

https://stackoverflow.com/questions/5210535/passing-data-between-view-controllers/31934786#31934786

 

Passing Data between View Controllers

I'm new to iOS and Objective-C and the whole MVC paradigm and I'm stuck with the following: I have a view that acts as a data entry form and I want to give the user the option to select multiple

stackoverflow.com

 

728x90
반응형