UIImagePickerController发布我的视图和控制器

时间:2011-06-22 01:27:25

标签: iphone objective-c ios uiimagepickercontroller

我的应用程序中有5个选项卡,第五个选项卡是“设置”选项卡,(内部是UINavigationController),其中一个选项是用户可以编辑个人信息并选择个人资料图片。

在触发UIImagePickerController(相机模式)并按下取消(我甚至不是在谈论拍照)之后,所有内容都返回到原始状态,第一个选项卡,所有视图和控制器都被iOS发布并重新创建。用户在设置中更新但未保存的所有内容都已消失。

怎么可能避免这种情况?

注意:我正在使用UIImagePickerController的单例实例,没有发现Instruments的泄漏。当我开火时,“接收到内存警告。等级= 1”会不断出现。

你将成为一名救生员 - 谢谢!

- 编辑 -

找到它:

我正在使用自定义标签栏(UIView),因此在设置中我从该自定义标签栏控制器(它是应用程序中的主要部分)呈现UIImagePickerController模式(否则选择器将位于其下方)。

我重建了标签栏,所以现在自定义视图只是标准UITabBar上的子视图,现在我正在调用[self presentModalViewController:imagePickerController animated:YES];在我的应用程序设置中,它工作得很好。

因此,结论是当你从另一个控制器而不是“自我”中呈现它时,图像选择器会很奇怪。

2 个答案:

答案 0 :(得分:0)

您可以做的是为所有字段创建变量,并将用户字段的内容写入这些变量,然后在拍摄或取消图像时,将所有这些字段写回并释放变量。基本上你暂时保存所有字段,然后恢复它们。

答案 1 :(得分:0)

听起来你没有正确处理内存警告。在模拟器中,您可以选择“模拟内存警告”来模拟发生的情况。

长篇故事是-[UIViewController didReceiveMemoryWarning]如果视图没有超视图,则会释放其视图。有三种简单的方法可以解决这个问题:

  • 覆盖-didReceiveMemoryWarning无所事事。
  • -viewDidDisappear:中保存状态,在视图卸载之前应始终调用该状态(除非视图从未出现在第一位)。
  • 在用户编辑时保存状态,可以通过立即保留(如果没有取消按钮)或视图控制器中的属性/ ivar(如果您只想保存,如果用户没有单击取消)

您可能还想考虑一下如果您的应用已落后并被杀死会发生什么......