2010-05-12 38 views
0

我有一个基于导航栏的应用程序,而在UIViewController中,我在选择照片时出现内存警告。它被处理,但当我弹出viewcontroller并返回到顶级viewcontroller导航栏是空白的。其他一切都会重新加载,但不包括导航栏按钮和标题。内存警告导致空白导航栏

我知道viewDidUnload是在顶层视图控制器上调用的,当我回到它的时候,VC会再次使用viewDidLoad重新加载,但导航栏没有加载到那里,它来自mainwindow.xib。任何想法我做错了什么? (OS 3.2,iPad的)

编辑下面是从控制台日志显示所发生的事情在内存警告时的摘录:

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] 

在这一点上我打的导航栏后退箭头返回到父视图控制器,这导致在其上的viewDidLoad中(因为它先前被卸载):

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

请发布您的'记忆警告'的确切消息。这将有助于将您的问题传达给此处的社区。 – 2010-05-12 17:14:09

+0

@Adam:我已经添加了内存警告以及日志文件 – progrmr 2010-05-12 19:35:00

回答

1

按照documentation viewDidLoad中是” ......用于在执行额外的初始化步骤从nib文件加载的视图。“

我一直认为viewDidLoad只被调用过一次,最近才意识到在内存警告(在视图被卸载并在稍后重新加载之后)它是如何被再次调用的。

当我第二次调用viewDidLoad时,我的主视图控制器的初始化代码部分没有正常工作。我修复了它的一部分,并将它的一部分移到了awakeFromNib中,并解决了这个问题。

+0

的哪些部分的具体相关部分? – 2010-10-17 02:33:16