【问题标题】:Keep text in UITextView inside UITableViewCell将文本保留在 UITableViewCell 内的 UITextView 中
【发布时间】:2014-12-17 18:57:06
【问题描述】:

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

我的问题是我无法从 textviews 中读取文本。当用户输入文本并且表格视图上下滚动时,我可以看到文本被保留,因此它必须存储在内存中的某个地方,这发生在 cellForRowAtIndexPath 中。 为了收集文本,我调用了相同的方法,但返回的单元格为 nil。因此,滚动时似乎会保留文本,但如果以编程方式调用该方法,则不会返回单元格。 我不知道如何跟踪这个文本,我也尝试过 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]];

【问题讨论】:

    标签: ios objective-c uitableview ios8 uitextview


    【解决方案1】:

    您不应该依赖您的表格视图来保留输入正确文本的文本字段。一旦 TableViewCell 滚动离开屏幕,它就会被 TableView 重用,并且用户输入的值可能会被覆盖。

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

    【讨论】:

    • 滚动时文本存在,因此保留它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    相关资源
    最近更新 更多