4
respostas

Zerar variável quando o usuário pressionar HOME no iPhone

Olá.

Fiz um app simples aqui para treinar. Ele possui uma variável contadora, que vai acrescentando 1 a cada clique do usuário. Está funcionando corretamente.

Fiz um teste de execução, cliquei algumas vezes e o valor foi crescendo. Então fui em Simulator / Hardware / Home. O app saiu de cena. Pressionei o ícone do app no Simulator e ele retornou mantendo o valor de cliques..

Como faço pra que ele retorne à tela zerando o valor do contador de cliques?

4 respostas

Oi Fabrício, tudo bom? Suponho que você esteja querendo zerar o contador quando a app entra em background (Command + shift + H) e não fechar a app totalmente (command + shift + H + H).

A app sabe quando vai sair da tela através do método "applicationDidEnterBackground" e que vai voltar à tela através do método "applicationWillEnterForeground", ambos da classe AppDelegate. Dá uma olhadinha nesse método e qualquer dúvida, só falar ;)

Olá Thais, tudo bem? Não consegui implementar estes métodos. Sou ainda novato, não entendi perfeitamente sua postagem. Tentei usar override func mas não foi reconhecido. Tentei colocar class ViewController: UIViewController, AppDelegate mas deu herança múltipla de classes... :(

Fabrício, os métodos não são no arquivo ViewController, é no arquivo AppDelegate. Ele é o responsável por essas transições da aplicação.

https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html

Ok, consegui entender e me achar. Mas ainda não consegui resolver o problema:

O método onde devo atuar se chama applicationDidEnterBackground(). Em testes com um print básico ele respondeu conforme estou precisando.

O meu problema agora é como acionar de dentro deste método a variável que está lá no ViewController.swift?

Gostaria de algo como ViewController.cont = 0, mas isso dá erro.

Então tentei acionar uma função void que está em View Controller. Tentei ViewController.alteraSmile() e dá erro. Fica sugerindo ViewController dentro dos parênteses. Tudo que tento colocar ali, nega. Já tentei: ViewController, ViewController.self, self, nil... O que se passa ali como parâmetro? É uma função void!!! ela não tem entrada de dados.

Isso ainda está confuso pra mim. :(