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

时间:2014-02-26 21:09:07

标签: ios cocoa-touch uitableview

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

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

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

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

2 个答案:

答案 0 :(得分:1)

使用UITableViewController,您可以通过UITableViewDataSource实施来控制所有内容。

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

这是一个显示这一系列事件的图表。

Interaction diagram

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

答案 1 :(得分:0)

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