在我的应用程序中,我使用从 XIB 加载的自定义 UITableViewCells。每个单元格包含 4 个对象,如 UIImageView、UILabel、UITextField 等...
我在 cellforrowatindexpath 中设置了每个对象的标签,因此每个对象都具有相同的标签,这也是表格视图中单元格的行。
问题是,如果它们都具有相同的标签,我该如何访问单元格中的这些对象?如何在没有 NSIndexPath 参数的方法中正确访问这些对象?
谢谢!
在我的应用程序中,我使用从 XIB 加载的自定义 UITableViewCells。每个单元格包含 4 个对象,如 UIImageView、UILabel、UITextField 等...
我在 cellforrowatindexpath 中设置了每个对象的标签,因此每个对象都具有相同的标签,这也是表格视图中单元格的行。
问题是,如果它们都具有相同的标签,我该如何访问单元格中的这些对象?如何在没有 NSIndexPath 参数的方法中正确访问这些对象?
谢谢!
我个人尝试避免使用标签,因为我通常过度使用它们到完全混乱的地步,并且已经开始寻找更优雅的方法来解决它。例如,在您的情况下,我会IBOutlet
为 customUITableViewCell
的对象创建 s ,使它们在语义上更具相关性。但是,您的情况可能会有所不同 - 问题不足以让我说这肯定对您有用。
也就是说,听起来你可以通过以下方式完成你想做的事情:
cellForRowAtIndexPath
方法返回的每个单元格一个标签(在返回之前)这样,您可以通过以下方式UIView
从(任何地方)访问单元格的对象(可能是 s)UITableViewController
:
UITableViewCell *cell = (UITableViewCell *)[self.tableview viewWithTag:CELL_TAG];
UIView *objectInCell = [cell viewWithTag:OBJECT_TAG];
请记住,这将允许您访问特定单元格中的对象。如果您试图访问所有单元格的对象,您可以简单地遍历所有单元格。但是,我感觉此时这将开始变得不必要地复杂。如果您发布更多信息,说明您通过这种方式使用标记究竟想要达到什么目的,这将有所帮助。希望这在此期间有所帮助。
不知道为什么要用相同的数字对一行中的所有标签进行编号,但我想你有你的理由([cell1 viewwithTag:0] 和 [cell2 viewWithTag: 0] 应该足以区分它们。)
为所有元素提供相同的标记通常会破坏首先标记它们的目的,但如果您必须在标记中包含行号(并且对结果集的大小有一些了解),您可以使用标记每个元素a ((multiple of size) + item# ) 整数(例如,如果您知道该表将包含少于 10,0000 个结果,您可以在第一行将每个元素标记为 10001、10002、10003 和 10004,以及 20001,接下来是 20002、20003 和 20004,等等...然后要处理第 4 行中的第三个元素,您将使用 [view withTag: 40003]。
您可以使用以下方法访问所选单元格的行:
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]
但我不确定这是否能回答你的问题。请更具体。