2012-01-05 35 views
0

我试图从我的地址簿中获取联系人。我在我的tableview上显示数据。首先,我设置tableviewcell的高度。具有不同值的tableview委托方法中的索引路径

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

之后,我实现

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

我将这些委托方法内的条件和逻辑。但是我遇到了一个问题,两个方法中的索引路径的值是不同的。由于这个原因,当我通过地址簿(在这些方法中)循环时,两个委托方法都以不同的顺序执行。为什么该指数路径在这两种情况下

+3

你应该关心的两个委托方法的唯一的事情是返回正确的值**根据**给定的索引路径 – 2012-01-05 14:59:28

回答

2

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath只是叫法不同值的电池映入眼帘

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath被称为所有行之前提出得到的tableview的总高度的tableview时内容。

而且我还必须同意@Vince的评论,你应该关心的唯一事情是这些方法根据给定的索引路径返回正确的值。

通常情况下,您应该将表格视图所需的所有数据载入,例如NSArray。然后根据indexpath从该数组中获取正确的对象。

+0

这意味着,这两个索引路径将是不同的权利? – 2012-01-05 15:05:41

+1

不,indexpath是表格视图中行的位置。如果你有2个部分,每个部分有4行。那么第一部分中第一行的索引路径应该是'{0,0}'。因此'indexpath.section == 0'和'indexpath.row == 0'。 – rckoenes 2012-01-05 15:10:33

+0

我正在显示两个方法的indexpath.row,在我的日志中。但是在这两种情况下,我得到了不同的值 – 2012-01-05 15:38:34