如何访问表格视图中的单元格?
Posted
技术标签:
【中文标题】如何访问表格视图中的单元格?【英文标题】:How to access the cell in tableview? 【发布时间】:2012-04-02 12:27:09 【问题描述】:我是 iPhone 开发的新手。我遇到了一个问题。我想在我的 UITableView 中实现一个复选框功能。但我的 UITableViewCells 是由图像和 3 个 UILabel 组成的自定义单元格。我可以将一个子视图带到表格视图中,以便可以放置复选框图像并且我成功了。但是问题来了,每当我单击图像时,只有最后一个单元格复选框会更改。我想访问我点击的单元格。
我试过了
UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath]
但是由于单元格是自定义的,所以这会崩溃。
谁能给我推荐一个好方法?
【问题讨论】:
发布更多代码。发布崩溃时的错误消息。 为什么要访问被触摸的单元格?您应该只处理 DATA,而不是 CELL。单元格只是用于显示数据,数据存储在您的模型中(如果不确定,请搜索 MVC)。 使用- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
你会选择索引,使用indexPath.row
你会得到用户选择的单元格。
【参考方案1】:
而不是使用
UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath]
尝试使用
YourCustomCell *cell = (YourCustomCell *)[self.tableView cellForRowAtIndexPath:indexPath];
希望对你有帮助
【讨论】:
@user1288402 欢迎您。如果有帮助,请不要忘记将答案标记为正确。它将鼓励用户在未来回答您的问题。【参考方案2】:首先你需要定义一个标签-
#pragma imageViewTag 1
然后在您的cellForRowAtIndexPath
中将此标签分配给您的图像视图
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
然后您可以在此标签的帮助下在任何地方访问您的图像视图 -
UITableViewCell *cellView = (UITableViewCell*) [tblView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]];
UIImageView *imgView = (UIImageView*) [cellView viewWithTag:imageViewTag];
【讨论】:
【参考方案3】:在您的 TableView DidSelect 委托方法中
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UIImageView *image = [cell.contentView viewWithTag:15];
//You should have set the tag value as 15 when creating the image in cell
//and you should have added to the cell contentview
如果您无法获得电池,那么您可能不会正确使用可重复使用的电池概念。所以发布你的整个 cellforrowindex 代码。
如果您使用的是检查类的东西。为什么不使用 tableview 的默认显示指示器而不是图像。
【讨论】:
以上是关于如何访问表格视图中的单元格?的主要内容,如果未能解决你的问题,请参考以下文章
iOS:如何从 tableview 的自定义单元格中的 UITextField 访问值