停止调用cellForRowAtIndexPath

时间:2015-07-29 20:56:25

标签: ios objective-c iphone uitableview

我的应用程序中有一个表视图,其中单元格每个单元格只包含一个textview。这些文本视图使用存储在NSUserDefaults中的文本填充。用户可以更改文本,然后再次保存。 NSUserDefaults的文本数组(用于填充文本视图的文本)在viewDidLoad加载。但是,单元格中文本视图的文本在cellForRowAtIndexPath中设置。问题是当用户滚动tableview时调用cellForRowAtIndexPath,所以如果他/她正在编辑其中一个textView并在键入时滚动,则所有内容都会消失,因为cellForRowAtIndexPath被调用并且textViews文本&# 39; s是根据viewDidLoad上加载的已保存数据设置的。

所以......我认为可能只允许cellForRowAtIndexPath更改文本视图的文本一次(在应用程序启动时)将解决问题,但事实证明,每个单元格都会单独调用cellForRowAtIndexPath。所以它工作但只加载了第一个单元格的textView的文本,因为我只让cellForRowAtIndexPath做了一次。

我的问题是:只有在调用viewDidLoad时,我才能让cellForRowAtIndexPath更改所有单元格的textView文本?或者我可以从viewDidLoad方法为每个单元格设置textView的文本吗?因为这显然可以解决问题。

1 个答案:

答案 0 :(得分:2)

每当用户在您的某个单元格中更改textview中的文本时 - 立即将该文本保存到textArray中。现在,如果用户滚动,然后返回到该单元格 - 单元格将包含更新的文本。然后,当用户完成此屏幕中的文本编辑时,将所有更改保存到NSUserDefaults(例如,您可以将其保存在viewWillDisappear中)。