内存警告后UITableView滚动问题

时间:2010-09-30 09:23:49

标签: iphone uitableview scroll ios4 non-scrolling

我创建了一个类似于iOS地址簿的UITableView,它允许您在一行中选择图像,并且还有其他自定义单元格,其中包含用于输入数据的文本字段。只有在加载大图像并在控制台中获得内存警告后才会遇到此问题:

收到内存警告。级= 1

我在模态视图中使用UIImagePickerController加载图像。

因此,当发生内存警告时,我的父tableviewcontroller执行一个viewDidUnload,它是空的:

- (void)viewDidUnload { }

一旦我关闭模态视图(选择图像),tableview重新加载数据,一切看起来都很好......但是,滚动无法正常工作。行为很奇怪:滚动不会超过某一点。我可以直接向下拉动滚动,但是一旦我释放,滚动就会反弹并隐藏底部的fiew单元格(看起来很正常)。

对于我的生活,我无法弄清楚发生了什么,为什么这只发生在记忆警告之后。

这只发生在我的iPhone上(用iPhone 4测试)。这进一步让我相信内存警告可能是我问题的根源。

3 个答案:

答案 0 :(得分:1)

我有一个解决方法。在显示模态视图之前,您应该关闭键盘并等待其解除。

答案 1 :(得分:0)

您在[loadView]或[viewDidLoad]中设置的所有内容都应在[viewDidUnload]中清除。反过来说:你在[viewDidUnload]中销毁的所有内容都应该在[loadView]或[viewDidLoad]中重新创建并重新初始化。

您应该将其视为辅助init / dealloc序列。

答案 2 :(得分:0)

-(void)viewDidUnload;设置为空在该上下文中肯定是错误的,因为至少应该调用[super viewDidUnload];否则您将在视图中有两个表(甚至更多),因为控制器将继续在-(void)loadView;

中创建它们