使用相同标记访问自定义UITableViewCells中的对象?

时间:2011-12-17 02:05:29

标签: ios arrays tableview nsindexpath

在我的应用程序中,我使用从XIB加载的自定义UITableViewCells。每个单元格包含4个对象,如UIImageView,UILabel,UITextField等......

我在cellforrowatindexpath中设置了每个对象的标记,因此每个对象都有相同的标记,也就是tableview中单元格的行。

问题是,如果它们都具有相同的标签,我怎么想在单元格中访问这些对象?如何在没有NSIndexPath参数的方法中正确访问这些对象?

谢谢!

3 个答案:

答案 0 :(得分:2)

我个人试图避免使用标签,因为我经常过度使用它们到完全混乱的程度,并开始寻找更优雅的方法。例如,在你的情况下,我会为自定义IBOutlet的对象创建UITableViewCell s,使它们在语义上更具相关性。但是,你的情况可能会有所不同 - 我不能说这对你肯定有用。

那就是说,听起来你可以完成你想做的事情:

  1. cellForRowAtIndexPath方法返回的每个单元格提供一个标记(在返回之前)
  2. 为单元格中的每个对象提供一个标记,就像您似乎已经完成的那样
  3. 通过以下方式,您可以从UIView中的任意位置访问单元格的对象(大概是UITableViewController):

    UITableViewCell *cell = (UITableViewCell *)[self.tableview viewWithTag:CELL_TAG];
    UIView *objectInCell = [cell viewWithTag:OBJECT_TAG];
    

    请注意,这样您就可以访问特定单元格中的对象。如果您尝试访问所有您的单元格的对象,您可以简单地遍历所有这些对象。但是,我觉得这将开始变得不必要地复杂化。如果你通过这种方式利用标记发布了更多关于你想要实现的内容的信息,那将会有所帮助。希望在此期间有所帮助。

答案 1 :(得分:0)

不知道为什么会为具有相同编号的行中的所有标记编号,但我想你有理由([cell1 viewwithTag:0]和[cell2 viewWithTag:0]应该足以区分它们。 )

为所有元素赋予相同的标记通常会使首先标记它们的目的失败,但如果您必须在标记中包含行号(并且对结果集的大小有所了解),则可以标记每个元素都带有((大小的多个)+ item#)整数(例如,如果您知道该表将保存少于10,0000个结果,则可以将每个元素标记为第一行中的10001,10002,10003和10004,和下一个20001,20002,20003和20004等...然后要解决第4行中的第三个元素,你可以使用[view withTag:40003]。

答案 2 :(得分:-1)

您可以使用以下方法访问所选单元格的行:

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]

但我不确定这是否能回答你的问题。请更具体。