带有输入字段的 UITableView - 如何在进入详细视图并返回时保留值

Posted

技术标签:

【中文标题】带有输入字段的 UITableView - 如何在进入详细视图并返回时保留值【英文标题】:UITableView with input fields - How to keep values while going to detail view and back 【发布时间】:2012-12-21 04:14:21 【问题描述】:

有点恐慌,真的需要一些帮助!

我正在制作一个应用程序来填写表格。表单的布局是在 Web 服务器上创建的,然后 ipad 应用程序与之同步,复制表单数据库,然后在本地运行它。

一种类型的文本字段是 UITextView,用户可以在其中通过直接写入字段或使用许多预定义文本(也在网络服务器上定义)中的一种来输入文本。

要使用预定义的文本,用户触摸/选择包含 UITextView 的表格单元,然后将类别选择器视图推送到屏幕上。在选择类别时,用户会获得一个文本列表,在选择文本后,用户会获得一个简单的 uitextview 以在插入之前对其进行编辑。使用保存按钮后,用户将返回到现在添加所选文本的原始视图。

流程图:

 root view with input fields-> category picker -> text picker -> editor 
  /\                                                               |
   '------------------------------save text------------------------'

问题是当任何其他视图加载时,所有其他输入字段都被清空!选定字段的值通过 prepareForSegue 传递,因此保留一个。

我有一个保存功能,可以将所有字段保存到数据库中。我试图在 prepareforsegue 调用中调用它,但它要么崩溃要么什么都不做。

问题:我可以把保存功能放在哪里?我可以/应该用另一种方式吗?考虑将所有标签的值放在我的 appDelegate 内的字典中,而不是运行保存功能,但是每次编辑输入字段时如何更新它?

另外 - 将 categorypicker 等放在某种 popover/modal/popup-view 中而不是 push segue 会阻止清除值吗?我没有从这些观点中获得经验,有人可以给出一个好的起点吗? (也许是一个很好的教程,而不是沉重的苹果文档 :)

我有一个明天的截止日期,还有很多事情要完成,所以我非常感谢任何帮助!

感谢您的宝贵时间!! /戴夫

【问题讨论】:

【参考方案1】:

我认为您的问题是由缺少模型引起的(就模型-视图-控制器模式而言)。代表表单数据的模型(例如,自定义对象、NSArray、NSDictionary)应该更新视图,并且应该在 prepareForSegue 中传递,而不是输入字段的值。

具体来说,创建一个维护最新数据的新属性。当用户对某些字段进行编辑或选择类别时,更新模型。然后,当您返回表单视图控制器时,使用 viewDidAppear 将输入字段更新为最新值。

【讨论】:

以上是关于带有输入字段的 UITableView - 如何在进入详细视图并返回时保留值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用文本字段 UITableView 从自定义单元格中获取值?

具有多行输入字段的 UITableViewCell?

带有 Section、IndexList 和 Search 的 UITableView

加载 UItableView 以响应 uitextfield

带有 UITextField 的 UITableView,滚动错误

我将如何在 UITableView 中创建文本字段