UIViewController llamadas de ciclo de vida en combinación con restauración de estado
Estoy tratando de implementar la restauración de estado en una aplicación que utiliza iOS 6+ y guiones gráficos, pero tengo problemas para encontrar una manera de evitar llamadas duplicadas a métodos pesados.
Si simplemente inicio la aplicación, necesito configurar la interfaz de usuario enviewDidLoad
:
- (void)viewDidLoad {
[super viewDidLoad];
[self setupUI];
}
Esto funciona bien en un mundo normal, sin restauración de estado. Ahora he agregado la restauración de estado y, después de restaurar algunas propiedades, necesito actualizar la interfaz de usuario con esas propiedades:
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder {
[super decodeRestorableStateWithCoder:coder];
// restore properties and stuff
// [...]
[self setupUI];
}
Entonces, ¿qué pasa ahora es que primero elsetupUI
método se llama desdeviewDidLoad
, y luego otra vez desdedecodeRestorableStateWithCoder:
. No veo un método que pueda anular y que siempre se llame último.
Este es el orden normal de las llamadas de método:
awakeFromNibviewDidLoadVer ApareceráviewDidAppearCuando se utiliza la restauración de estado, esto se llama:
awakeFromNibviewDidLoaddecodeRestorableStateWithCoderVer ApareceráviewDidAppearNo puedo hacer la llamada asetupUI
enviewWillAppear
porque entonces también se ejecutaría cada vez que vuelvas nativo a una vista.
Sería mucho más práctico sidecodeRestorableStateWithCoder
se llamaba antesviewDidLoad
porque entonces podrías usar propiedades restauradas. Lamentablemente ese no es el caso, así que ... ¿cómo puedo evitar hacer el trabajo enviewDidLoad
cuando sé que tengo que hacerlo todo de nuevo endecodeRestorableStateWithCoder
¿justo después de?