[swift] 앱의 화면 전환에 따른 데이터 전달 및 라이프사이클

목차


화면 전환

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 앱의 화면 전환은 뷰 컨트롤러의 라이프사이클에 크게 영향을 미칩니다. 라이프사이클 메서드를 활용하여 특정 타이밍에 코드를 실행할 수 있습니다.

예시 - 뷰 컨트롤러 생명주기 메서드


본 포스트에서는 iOS 앱에서의 화면 전환에 따른 데이터 전달 방법과 라이프사이클에 대해 알아보았습니다. 앱 개발 시 이러한 기술을 적절히 활용하여 사용자 경험을 개선할 수 있습니다.

더 자세한 내용은 다음의 참고 자료를 참고하시기 바랍니다:

이상입니다. 감사합니다!