как приостановить приложение, когда пользователь выходит, и возобновить его, когда они снова войдут в приложение?

Я хочу, чтобы мое приложение имело возможность запускать функцию паузы, когда пользователь нажимает кнопку "Домой". Когда я выхожу из приложения, оно приостанавливается, но затем запускает функцию загрузки, когда я снова захожу в приложение. Кто-нибудь знает, как сделать так, чтобы функция загрузки представления запускалась только при первой загрузке представления, прежде чем оно будет завершено?

Вот моя функция паузы:

func pauseGame322() {
    ThreeTime = 3
    CountdownUntillGameLabel.text = String(ThreeTime)
    if PlayButton.isHidden == true &&
        ContinueButton.isHidden == true{
        timer.invalidate()
        timer10.invalidate()
        TotalSecondsForPause.isHidden = false
        PauseView.isHidden = false
        UnpauseButton.isHidden = false
        TotalSecondsForPause.text = String(time)
    }
} 

person Golden Mamba    schedule 01.04.2018    source источник
comment
Где-то вы инициализируете свой viewController, возможно, вызывается viewDidAppear.   -  person Shamas S    schedule 02.04.2018


Ответы (2)


Вызовите функцию паузы из applicationWillResignActive(_:) в App Delegate (выделено мной) :

Этот метод следует использовать для приостановки текущих задач, отключения таймеров и снижения частоты кадров OpenGL ES. Игры должны использовать этот метод для приостановки игры. Приложение в неактивном состоянии должно выполнять минимальную работу, пока оно ожидает перехода в активное или фоновое состояние.

Если вам нужен доступ к текущему контроллеру представления, задайте этот вопрос. Но обновлять интерфейс здесь бессмысленно. Ваше приложение вот-вот перейдет в фоновый режим, пользователи не увидят никаких изменений пользовательского интерфейса. Вы отображаете меню паузы, когда пользователь возвращается, в applicationWillBecomeActive(_:).

person Code Different    schedule 02.04.2018

Вы не можете ограничить вызов viewDidLoad. Каждый раз, когда ViewController будет инициализирован, будет вызываться viewDidLoad. Чтобы справиться с таким сценарием, вы можете поместить свой код в отдельный метод и вызвать этот метод из viewDidLoad после выполнения проверки в первый раз. Чтобы знать, первый раз это или нет, можно просто поставить флаговую переменную в UserDefaults.

Кроме того, когда вы говорите «Пользователь существует», это может иметь разные значения. Вы имели в виду, что пользователь убивает приложение, или вы имеете в виду, что пользователь переводит приложение в фоновый режим? В первом случае вы должны в первый раз поставить проверку в методе applicationDidFinishLaunching, а во втором случае (например, в фоновом режиме) вызвать функцию паузы из applicationWillEnterBackground и воспроизвести из applicationDidEnterForeground.

Попробуйте использовать методы жизненного цикла приложения более эффективно.

person Pallav Trivedi    schedule 02.04.2018