Ios 将UITextView中的文本保留在UITableViewCell中

Ios 将UITextView中的文本保留在UITableViewCell中,ios,objective-c,uitableview,ios8,uitextview,Ios,Objective C,Uitableview,Ios8,Uitextview,我有一个子类UITableViewCell,它在父ViewController viewDidLoad事件(表视图所在的位置)上加载nib。 在这个UITableViewCell中有一个UITextView。 其想法是,用户在此文本视图中输入文本,当按下按钮时,它会将此文本答案保存为NSUserDefaults中的问卷 我的问题是我无法从文本视图中读取文本。当用户输入文本并上下滚动表视图时,我可以看到文本被保留,因此它必须存储在内存中的某个位置,这种情况发生在cellForRowAtIndexP

我有一个子类UITableViewCell,它在父ViewController viewDidLoad事件(表视图所在的位置)上加载nib。 在这个UITableViewCell中有一个UITextView。 其想法是,用户在此文本视图中输入文本,当按下按钮时,它会将此文本答案保存为NSUserDefaults中的问卷

我的问题是我无法从文本视图中读取文本。当用户输入文本并上下滚动表视图时,我可以看到文本被保留,因此它必须存储在内存中的某个位置,这种情况发生在cellForRowAtIndexPath中。 为了收集文本,我调用了相同的方法,但返回的单元格是nil。因此,滚动时似乎保留了文本,但如果以编程方式调用该方法,则不会返回单元格。 我不知道如何跟踪这篇文章,我也尝试过didendisplayingcell方法,但有时它没有被调用,所以不可靠

Nib注册:

UINib *nib = [UINib nibWithNibName:@"QuestionCell" bundle:nil];
[[self tableViewOutlet] registerNib:nib forCellReuseIdentifier:cellIdentifier];
cellForRowAtIndexPath:

QuestionCell *cell = [tableViewOutlet dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell.indexPath){
    cell.indexPath = indexPath;//Setup cell ...
尝试获取单元格内textView中的文本时,如果不可见,则返回nil:

QuestionCell *cell = (QuestionCell *)[tableViewOutlet cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];

您不应该依靠tableview来保留输入了正确文本的文本字段。一旦TableViewCell从屏幕上滚下,它将被TableView重用,并且用户输入的值可能会被覆盖


相反,您应该将ViewController注册为UITextView的委托,并在每次按键时更新TableView的数据源对象。然后,您可以随时从该数据源对象中读取用户输入的文本。

滚动时文本存在,因此它会保留它