목차
화면 전환
iOS 앱 개발에서 화면 전환은 사용자 경험을 향상시키기 위해 중요한 요소입니다. 화면 전환의 예로는 push
, present
, pop
, dismiss
등이 있습니다.
1. push
/ pop
push
는 기존 뷰 컨트롤러 스택에 새로운 뷰 컨트롤러를 추가하는 방식입니다. 주로 네비게이션 컨트롤러와 함께 사용됩니다. pop
은 현재 뷰 컨트롤러를 스택에서 제거하는 방식입니다.
2. present
/ dismiss
present
는 현재의 뷰 컨트롤러 위에 새로운 뷰 컨트롤러를 모달로 보여주는 방식입니다. 주로 모달로 나타내고자 하는 뷰 컨트롤러를 사용합니다. dismiss
는 모달로 나타난 뷰 컨트롤러를 닫는 방식입니다.
데이터 전달
뷰 컨트롤러 간의 데이터 전달은 화면 전환이 필요한 경우 매우 중요합니다. 다음은 데이터 전달을 위한 몇 가지 방법입니다.
1. 프로퍼티 활용
뷰 컨트롤러 간에 데이터를 전달할 때는 프로퍼티를 활용하는 방법이 일반적입니다. 전달할 데이터가 다른 뷰 컨트롤러의 프로퍼티에 대입되어, 전달되고자 하는 뷰 컨트롤러에서 이 값을 사용할 수 있습니다.
class SourceViewController: UIViewController {
var data: String?
func navigateToDestination() {
let destinationVC = DestinationViewController()
destinationVC.data = self.data
self.navigationController?.pushViewController(destinationVC, animated: true)
}
}
class DestinationViewController: UIViewController {
var data: String?
override func viewDidLoad() {
super.viewDidLoad()
if let data = self.data {
print(data) // 전달받은 데이터 사용
}
}
}
2. 델리게이트 패턴 활용
델리게이트 패턴을 활용하여 데이터를 전달할 수도 있습니다. 델리게이트 패턴은 프로토콜을 정의하고, 해당 프로토콜을 구현한 객체를 뷰 컨트롤러의 델리게이트로 설정하는 방식입니다.
protocol DataDelegate: class {
func passData(data: String)
}
class SourceViewController: UIViewController {
weak var delegate: DataDelegate?
func navigateToDestination() {
let destinationVC = DestinationViewController()
destinationVC.delegate = self
self.navigationController?.pushViewController(destinationVC, animated: true)
}
func passDataToDestination(data: String) {
self.delegate?.passData(data: data)
}
}
class DestinationViewController: UIViewController, DataDelegate {
func passData(data: String) {
print(data) // 전달받은 데이터 사용
}
}
라이프사이클
iOS 앱의 화면 전환은 뷰 컨트롤러의 라이프사이클에 크게 영향을 미칩니다. 라이프사이클 메서드를 활용하여 특정 타이밍에 코드를 실행할 수 있습니다.
예시 - 뷰 컨트롤러 생명주기 메서드
viewDidLoad()
: 뷰 컨트롤러가 메모리에 로드된 직후 호출됩니다. 뷰 간의 초기 설정을 주로 수행합니다.viewWillAppear(_ animated: Bool)
: 뷰 컨트롤러가 화면에 나타나기 직전에 호출됩니다. 애니메이션과 관련된 작업이 가능합니다.viewDidAppear(_ animated: Bool)
: 뷰 컨트롤러가 화면에 나타난 직후 호출됩니다. 데이터를 불러오거나 애니메이션을 실행하는 등의 작업을 수행합니다.viewWillDisappear(_ animated: Bool)
: 뷰 컨트롤러가 화면에서 사라지기 직전에 호출됩니다. 데이터 저장 등의 작업을 수행합니다.viewDidDisappear(_ animated: Bool)
: 뷰 컨트롤러가 화면에서 사라진 직후 호출됩니다. 메모리 해제 작업이나 뷰 초기화 등을 수행합니다.
본 포스트에서는 iOS 앱에서의 화면 전환에 따른 데이터 전달 방법과 라이프사이클에 대해 알아보았습니다. 앱 개발 시 이러한 기술을 적절히 활용하여 사용자 경험을 개선할 수 있습니다.
더 자세한 내용은 다음의 참고 자료를 참고하시기 바랍니다:
이상입니다. 감사합니다!