iOS 애플리케이션으로 소프트웨어 재설정

5149 단어 SwiftiOS
때때로 응용 프로그램을 통해 응용 프로그램을 다시 시작하려고 한다.예를 들어 로그아웃 후, 때로는 시작 후와 같은 일련의 처리를 처리하고 싶을 때가 있다.나는 이 방법으로 소프트웨어 리셋 메커니즘을 실시했다.

RootViewController


가장 먼저 시작하는 ViewController입니다.점검은 Main Interface가 설정한 Storyboard에서 Is Initial View Controller에 포함됩니다.

PS에 prefix가 있으니 무시하세요.또한 기본값은 Main Interface의 Main입니다.storyboard에는 RootViewController가 있을 수 있습니다.

첫 번째 화면 표시


외관도 좋아질 수 있음을 감안하여 RootViewController는 LaunchScreen이라고 표시했다.storyboard의 배치와 같습니다.
viewDidApper나 DB에서 데이터를 읽거나 비동기적으로 초기화 처리가 끝난 후, 메인 라인에 가장 먼저 표시할 화면을 표시하는 ViewController를 표시합니다.
RootViewController
let firstViewController = 最初に表示するControllerを生成
con.modalTransitionStyle = .crossDissolve
self.present(firstViewController, animated: true, completion: nil)
이때crossDissolve로 표시하면 사용자는 튀는 화면에서 교차하여 담입하여 최초의 화면을 표시한다.RootViewController의 표시를 중간에 알아채지 못했습니다.

소프트웨어 재설정


RootViewController에서present의ViewController에서 화면을 이동합니다. 심층에서도 RootViewController에서dismiss만 있으면 RootViewController로 돌아갈 수 있습니다.소프트웨어 재설정입니다.
화면 깊이의 차원에서 RootViewController의 구조를 참조해도 되지만, 스스로 Notification을 사용합니다.
RootViewController
deinit {
  NotificationCenter.default.removeObserver(self)
}

func viewDidLoad() {
  super.viewDidLoad()
  NotificationCenter.default.addObserver(self, selector: #selector(handleSoftwareResetNotification(_:)), name: MySortwareNotiifcation, object: nil)
}

func handleSoftwareResetNotification(_ notification: Notification) {
  // RootViewControllerがpresentしたfirstViewControllerがdismissされる
  dismiss(animated: true) {
    // 必要な初期化処理をした後、ふたたび、firstViewControllerをpresentすればいい
  }
}
My Software Reset Notification은 당연히 응용 프로그램만의 것으로 사전에 어딘가에 발표된다.
let MySoftwareRestartNotification = Notification.Name("MySoftwareRestartNotification")
재설정하려는 시간에 이 Notification을 보내면 Han d l e SotwreResetNotification이라고 합니다.
func softwareReset() {
  let notification = Notification(name: MySoftwareRestartNotification)
  NotificationCenter.default.post(notification)
}
이렇게 되면 사용자는 스파크 화면(실제로는 RootViewController)으로 돌아가 초기화 처리가 끝난 후에 다시 최초의 화면을 표시할 것이다.
만약 RootViewController를 사용하여 비동기적인 시간을 필요로 하는 처리를 한다면, 스파크 화면의 레이아웃 외에 읽기 중인 디스플레이와 진도표도 괜찮다.

좋은 웹페이지 즐겨찾기