我有一个UITableViewCell的子类,它在父ViewController viewDidLoad事件上加载一个nib - 表视图所在的位置。 这个UITableViewCell里面有一个UITextView。 想法是用户在此textView中输入文本,当按下按钮时,它将在NSUserDefaults中保存此文本(问卷的答案)。
我的问题是我无法从textviews中读取文本。当用户输入文本并且表格视图上下滚动时,我可以看到文本被保留,因此它必须存储在某个地方的内存中,这发生在cellForRowAtIndexPath中。 为了收集文本我称之为相同的方法,但返回的单元格为零。因此,在滚动时似乎保留了文本,但如果以编程方式调用该方法,则不返回该单元格。 我不确定如何跟踪这个文本,我也尝试过方法didEndDisplayingCell但有时它没有被调用因此它不可靠。
笔尖注册:
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]];
答案 0 :(得分:0)
您不应该依赖于您的tableview来保留输入正确文本的文本字段。一旦TableViewCell滚出屏幕,它就会被TableView重用,用户输入的值可能会被覆盖。
相反,您应该将ViewController注册为UITextView的委托,并在每次按键时更新TableView的数据源对象。然后,您可以随时从该数据源对象中读取用户输入的文本。