从外部源设置 UITableViewCell 内的内容?

Posted

技术标签:

【中文标题】从外部源设置 UITableViewCell 内的内容?【英文标题】:Setting content inside of a UITableViewCell from outside source? 【发布时间】:2014-02-26 21:09:07 【问题描述】:

我有一个带有几个 UITableViewCells 的 UITableViewController。每个单元格都有不同的内容:标签、图像、文本字段等。我需要根据 UITableViewController 类的用户交互来设置这些内容。

例如:我有一个包含 UIImageView 的单元格。当用户点击 UIImageView 时,我希望显示 UIActionSheet。问题是我无法将 UIImageView 设置为 UITableViewController 类的属性。它必须是该 UITableViewCell 的子类的属性。但这意味着如果我编写用于在 UITableViewCell 子类中显示 UIActionSheet 的代码,它将不会在 UITableViewController 类中显示。

我的问题是,由于 UITableViewCell 中的所有对象都在它们自己的类中,当其中一个操作发生时,我如何提醒 UITableViewController 类?

此外,当显示 UIActionSheet 时,它需要显示在我的 UITableViewController 类中。如果我从该操作表中选择一个项目并希望将该项目的文本传播到在 UITableViewCell 内设置 UILabel 的文本,我该怎么做?

【问题讨论】:

【参考方案1】:

使用UITableViewController,您可以通过UITableViewDataSource 实现来控制一切。

您可以这样做:在模型类中创建一个int 字段,说明哪一行需要显示带有操作表的单元格,并将其设置为-1(这意味着没有单元格需要显示操作表)。在UIImageView 的点击处理程序中调用模型,并告诉它UIImageView 所属的单元格现在需要一个操作表。那时你告诉你的UITableView 重新加载数据。这使整个系统再次启动——表格视图回调您的数据源以请求计数,然后再次调用单元格。这是当您的数据源查看模型时,发现该行需要操作表,并返回单元格的子类,操作表可见。

这是显示此事件序列的图表。

当用户完成操作表时,操作表需要再次调用模型,并告诉它不再需要操作表(即将索引设置回-1)。之后它应该再次调用表视图,并告诉它重新加载数据。该序列将再次重复,但时间将不会出现要求操作表的标志,因此将返回一个常规单元格。

【讨论】:

非常优雅的方式!非常感谢您的帮助!【参考方案2】:

好吧,我只是建议使用自定义 UITableView Cell 类,因此当您创建自定义单元格时,请将您的 uitableview 控制器作为父类传递给该类。现在在您的自定义类中,您可以在 UIImageView 上添加 singleTap,通过点击它,您可以通过您已经传递的父对象调用父类中的方法。

【讨论】:

以上是关于从外部源设置 UITableViewCell 内的内容?的主要内容,如果未能解决你的问题,请参考以下文章

为 uitableviewcell 内的视图设置动画

使用 uitableviewcell 内的 uiscrollview 设置页面控件

将 UIPickerView 选择设置为 UITableViewCell 内的 UITextField

是否可以在 UITableViewCell 内的 UIImageView 上设置固定宽度?

根据 UITableViewCell 内的 contentSize 设置 UITextView 高度仅在初始表加载后有效

从 UITableViewCell 内的 UITextField 中删除 Tap 手势