종달랩 종다리 이야기

iOS 화면전환 및 데이터 전송정리(present)

Computer Science/Android&iOS
반응형

1. present 메소드 활용

 

ViewController를 생성하고 버튼도 하나 만드어 본다 (BlueTest)
두번째 ViewController를 만든다. 이때 해당 ViewController의 이름을 설정한다. "BluetoothTestVC"로 명명한다.
두번째 ViewController의 이름을 설정한다.

"BlueTest" 버튼을 클릭하면 동작할 함수를 다음과 같이 정의한다. 화면이동을 위한 첫번째 코드입니다. 물론 첫번째 ViewController를 위한 클래스는 정의해야 합니다.

 

@IBAction func moveToBlueTest(_ sender: Any){
  let uvc = self.storyboard!.instantiateViewController(withIdentifier: "BluetoothTestVC")
  uvc.modalTransitionStyle = UIModalTransitionStyle.coverVertical
  self.present(uvc, animated: true)
}

첫번째 ViewController에서 다음과 같은 코드를 통해서 두번째 ViewController로 이동하게 됩니다.

 

두번째 ViewController에서 화면을 종료하기 위해서는 다음과 같은 코드를 작성합니다.

 

@IBAction func Close(_ sender: Any){
  self.presentingViewController?.dismiss(animated: true)
}

해당 코드에서는 자체적으로 종료하는 것이 아니라, presentingViewController(즉, 현재 이 페이지를 호출하게 해준 ViewController를 통해서 화면을 닫도록 요청해야 함)를 통해서 현재 ViewController를 종료하도록 합니다.

 

여기서 만일 다시 self.presnet() 함수를 사용하게 되면, 화면을 닫는 것이 아니라 새로운 화면을 하나 더 만들어서 쌓게 됩니다. 메모리가 불필요하게 낭비가 되겠죠. 반드시 화면을 종료한다고 생각하고 화면을 닫아(dismiss) 해야 합니다.

반응형