2014-02-26 35 views
1

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

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

我的问题是,因为UITableViewCell中的所有对象都在它们自己的类中,所以如何在发生这些操作时提醒UITableViewController类?

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

回答

1

随着UITableViewController你通过UITableViewDataSource执行控制一切。

这里是你如何能做到这一点:使,说哪一行需要展示与动作片的细胞模型类的int场,并将其设置为-1(这意味着没有电池需要展示的动作片)。在UIImageView的龙头处理程序中调用该模型,并告诉它该UIImageView所属的单元现在需要一个操作表。此时你告诉你的UITableView重新加载数据。这使整个系统再次运行 - 表视图回调数据源以请求计数,然后再次调用该单元。这是您的数据源查看模型时发现该行需要一个操作表,并返回操作表可见的单元的子类。

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

Interaction diagram

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

+0

非常优雅的做法!非常感谢你的帮助! – Jonathan

0

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