记录tableView中的行:didSelectRowAtIndexPath:

时间:2012-03-05 22:19:13

标签: objective-c cocoa-touch uitableview

为了更好地理解表以供将来使用,我希望有人可以给我一些关于使用这种方法的简单语法。我希望能够获得一些理解并在将来建立它。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

}

所以,我有这个设置。假设我想要NSLog所选行的内容。我该怎么做呢?

到目前为止,我已经多次尝试过这种方法,但要么返回nil,要么我收到错误。

编辑:我自己找到了。溶液

NSLog(@"Row: %@", [dataArray objectAtIndex:indexPath.row]);

2 个答案:

答案 0 :(得分:4)

indexPath上有一个用于处理表的类别。它响应-row和-section。

NSLog(@"Row: %d , Section %d",[indexPath row], [indexPath section]);

答案 1 :(得分:0)

如果没有您的实际代码,我们无法正确回答这个问题,但广泛地说:

这是UITableViewDelegate protocol中的方法。表视图的委托是一个对象,表视图基本上要求它“关于在某些事件发生时该怎么做的”意见,例如在这里,当用户点击一行来选择它时。

通常,委托和表视图的data source是同一个对象。顾名思义,数据源提供表视图显示的数据。它通过看起来很像表视图委托方法的方法来做到这一点;表视图根据需要询问信息的数据源,而不是启动交换的数据源。

所以,在这个委托/数据源对象的某个地方(现在我们来到了让你自己的代码谈论真正有用的部分)有一个模型的引用表示将在表格中显示的所有信息。这可以像数组一样简单,也可以是某种类型的完整数据库的连接。在任何情况下,表视图都要求数据源为该模型中的每一行提供信息 - 这发生在tableView:cellForRowAtIndexPath:

这里的方法tableView:didSelectRowAtIndexPath:也可以访问模型,因此要检查行内容所需要做的就是执行与tableView:cellForRowAtIndexPath:中相同的查找。

作为一个具体的例子:

NSLog(@"%@", [modelArray objectAtIndex:[indexPath row]]);