使用来自单独的表视图控制器的选定单元格填充文本字段
Posted
技术标签:
【中文标题】使用来自单独的表视图控制器的选定单元格填充文本字段【英文标题】:Populating a Text Field with a Selected Cell from a Separate Table View Controller 【发布时间】:2014-03-04 07:26:55 【问题描述】:我有一个工作应用程序,只需要一些修改。这是一个带有表格视图控制器的基本应用程序,当用户点击加号按钮并将一些信息填充到文本字段中时,它会被填充。用户将输入名称和事件,我通过在文本字段下创建表格视图单元格让生活更轻松,这样当用户开始输入时,它会自动填充用户之前输入的相同名称。
我正在使用 Core Data 和 NSFetchedResultsController。我现在正在修改应用程序以使用户更加无缝。我没有在选择文本字段时弹出键盘,而是将用户模态地带到另一个表格视图控制器,用户可以在其中搜索、创建或仅从表格视图单元格中选择现有条目。
我已经让新的表格视图控制器出现并使用 NSFetchedResultsController 显示现有条目,并且运行良好。
我的问题是:如何在新的 Table View Controller 中选择一个单元格并让该单元格的选择做两件事:
1) 关闭模态视图 2) 使用从表视图控制器(模态出现)中选择的名称填充名称文本字段(在显示新表视图的视图控制器中)。
如果表视图位于同一个视图控制器中,我可以使用此功能,但我不太确定如何从另一个表视图控制器中提取该信息。
我猜我会使用协议,但我是个新手,因此任何指向正确方向的人,甚至是一些简单的示例代码都会受到极大的赞赏!
谢谢,
【问题讨论】:
【参考方案1】:你必须实现委托协议。
这个想法是 VC1 应该符合委托(即需要有一个过程 -(void)dataAvail:(NSString *)data withViewController:(ViewController *)sender...)。 VC1 会推送 VC2 并设置 VC2.delegate = self.
在VC2中,当cell被选中时,只需调用[self.delegate dataAvail:self.yourTextField.text withViewController:self];
现在,在您的 VC1 中,您应该实现 dataAvail... 只需获取值并关闭您的模态 VC2。
有关如何声明协议的更多信息,请在谷歌上搜索“ios 委托教程”。在为 iOS 编码时(如 MVC 或 KVC),委托协议无处不在。
【讨论】:
感谢 Armand - 这确实有道理.. 我找到了一些教程,我将不得不尝试解决这个问题 @Lavanya 完美!如果您对我的回答满意,请将其标记为已接受,这样其他人不会花时间寻找其他答案来提供。良好的编码以上是关于使用来自单独的表视图控制器的选定单元格填充文本字段的主要内容,如果未能解决你的问题,请参考以下文章
从popover返回后如何在collectionview单元格中填充文本字段