앱을 백그라운드로 보내고 다시 실행되었을 때 최초 실행 뷰가 아닌 종료되기 전 뷰가 보이도록 상태를 보존하고 또 입력중이던 메시지가 있으면 그대로 보존 및 복원되도록 해보자.
상태 보존과 복원을 하기 위한 애플리케이션 설정을 하자. AppDelegate.swift 파일에 아래와 같이 메소드를 추가하자.
func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool {
return true
}
func application(application: UIApplication, shouldSaveApplicationState coder : NSCoder) -> Bool {
return true
}
다음으로 아래 사진과 같이 스토리보드의 뷰컨트롤러를 클릭하고 아이덴티티 인스펙터를 열고 Restoration ID 에 복원할 아이디를 입력한다.
이렇게 하면 두개의 탭뷰가 있다고 했을때 두번째 탭뷰를 클릭하고 종료한 후 다시 실행하면 두번째 뷰가 복원되어 실행된다.
텍스트뷰에 입력한 값을 보존하기 위해 해당 컨트롤러에 아래와 같은 코드를 추가한다.(텍스트뷰를 추가하고 컨트롤러에 연동하는 과정은 생략한다.)
아래의 코드를 입력하면 텍스트 입력중 종료하고 다시 실행했을 때 입력중이던 텍스트가 복원되면서 실행된다.
override func encodeRestorableStateWithCoder(coder: NSCoder) {
coder.encodeObject(myTextView.text, forKey: "UnsavedText") // myTextView는 텍스튜뷰를 컨트롤러에 IBOutlet 으로 연동할때 생성한 이름이다.
super.encodeRestorableStateWithCoder(coder)
}
override func decodeRestorableStateWithCoder(coder: NSCoder) {
if let decodeObj = coder.decodeObjectForKey("UnsavedText") {
myTextView.text = decodeObj as! String
}
super.decodeRestorableStateWithCoder(coder)
}
위의 코드는 "핵심만 골라 배우는 ios 9 프로그래밍 (닐스미스 지음/ 황반석 옮김)" 에 있는 예제를 참고하여 작성하였습니다.
'programming language > swift' 카테고리의 다른 글
ios 위치정보 가져오기 in swift (0) | 2016.09.09 |
---|---|
ios MKMapItem 지도 사용하기 길찾기 in swift (0) | 2016.09.09 |
ios 로컬알림 및 앱 background 사용 in swift (0) | 2016.09.07 |
ios iAd, google Admob 사용하기 in swift (0) | 2016.09.07 |
ios cloudkit , subscription 사용하기 in swift (0) | 2016.09.04 |