2010-05-12 3 views
0

J'ai une application basée sur la barre de navigation et tandis que dans un UIViewController je reçois un avertissement de la mémoire lors de la sélection d'une photo. Il est géré mais lorsque j'applique le contrôleur de vue et que je reviens au contrôleur de vue de niveau supérieur, la barre de navigation est vide. Tout le reste est rechargé mais pas les boutons et le titre de la barre de navigation.l'avertissement de mémoire provoque la barre de navigation vide

Je sais que viewDidUnload a été appelée sur le contrôleur de vue de niveau supérieur et quand je y retourne, le VC est rechargé avec viewDidLoad mais la barre de navigation n'y est pas chargée, elle provient de mainwindow.xib. Des idées de ce que je fais mal? (OS 3.2, iPad)

EDIT Voici un extrait du journal de la console montrant ce qui se passe au moment de la mise en garde de la mémoire:

09:55:25.864 -[PhotoBox setPhotoImage:] size {1536, 2048} 
09:55:26.169 -[PhotoBox setPhotoImage:] resized to {768, 1024} 
09:55:26.180 Received memory warning. Level=1 
09:55:26.236 ClockMakerVC: viewDidUnload 
09:55:26.240 -[ClockMakerVC didReceiveMemoryWarning] 
09:55:26.271 saving 1 state objs to /var/mobile/Applications/82F2C13B-8663-4241-A603-B2BAD29691C1/Documents/ViewItem_State_Data 
09:55:26.298 -[ItemSettingsVC didReceiveMemoryWarning] 

A ce stade, je frappe la barre de navigation fléchée vers l'arrière pour revenir au contrôleur de vue parent, ce qui provoque une viewDidLoad sur elle (car il a déjà été déchargé):

09:55:44.477 read 1 state objs from /var/mobile/Applications/82F2C13B-8663-4241-A603-B2BAD29691C1/Documents/ViewItem_State_Data 
09:55:44.479 loadSavedItems: 295376119.689 opts=0 np=2 P=(284,402,200,200) L=(412,274,200,200) 1 PhotoBox 
09:55:44.484 ClockMakerVC: viewDidLoad: 1 saved items loaded 
+0

Veuillez poster le message exact de votre 'avertissement de mémoire'. Cela aidera à communiquer votre problème à la communauté ici. –

+0

@Adam: J'ai ajouté l'avertissement de mémoire et les parties adjacentes pertinentes du journal – progrmr

Répondre

1

Selon le documentation viewDidLoad est » ... utilisé pour exécuter les étapes d'initialisation supplémentaires sur vues qui sont chargées à partir de fichiers nib. "

J'ai toujours pensé que viewDidLoad n'était appelé qu'une seule fois et ne réalisait que récemment comment il est appelé à nouveau après un avertissement de mémoire (après le déchargement d'une vue puis son rechargement).

Certaines parties du code init de mon contrôleur principal dans viewDidLoad ne fonctionnaient pas correctement lorsqu'elles étaient appelées une seconde fois. J'en ai réparé des parties et en ai déplacé des parties vers awakeFromNib, ce qui a résolu le problème.

+0

quelles parties spécifiquement? –

Questions connexes