我对UIImagePickerControllerSourceTypeCamera有一个奇怪的问题。我的应用程序可以选择从图库中选择图片,或者使用相机拍照。如果我选择了图库,我会选择一张照片并返回我的视图,没有问题。
然而,当我使用UIImagePickerControllerSourceTypeCamera时,当我返回它时,我的视图似乎有点奇怪。
例如,我在viewDidLoad方法中有一堆代码,如果它需要基于某些因素,它会在视图中移动一些对象 - 当我退出UIImagePickerControllerSourceTypeCamera时调用此代码,但是当我退出时不会调用画廊。
这是预期的吗?
答案 0 :(得分:3)
我认为你的观点被资源密集型相机触发的didReceiveMemoryWarning
事件抛弃了。您可以强制模拟器生成内存警告,而无需相机测试此理论。
一般来说,viewDidLoad需要能够多次处理被调用。它不是init
方法。如果将self.view
设置为nil并且稍后需要重新创建视图,则会再次调用它。可能有一个更合适的地方可以放置任何导致问题的代码,但init
方法很棘手,因为指定的初始化程序被nib加载绕过。
从nib加载时,调用类的initWithCoder
而绕过整个init进程,因为假定dearchiving正在吸入已经初始化的对象。因此,重新初始化对象可能会破坏内容,例如调用loadView,它基本上与nib包含的内容冲突,因为它应该以编程方式构造nib已经拥有的内容。您仍然可以像往常一样覆盖initWithCoder,只要您像往常一样将args传递给super
,但是如果使用指定的初始化程序初始化对象,则不会调用它。当然,如果你需要担心,你可以将你想要执行的所有代码放入一个从两个被覆盖的方法调用的方法中。