Ios UITableViewSection行索引

Ios UITableViewSection行索引,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有一个UITableView,有三个部分(星期五、星期六、星期天),每个部分都有不同的数据和不同的行数。选中时,选定的行将展开,但其他两个部分中具有相同索引的行也将展开。我只希望展开单个选定行 有没有办法在didSelectRowAtIndexPath方法中获取该部分的值,并在我的heightForRowAtIndexPath方法中使用该值,以使所有其他行保持其未展开的大小 以下方法都在my UITableView子类中: - (void)tableView:(UITableView *)ta

我有一个UITableView,有三个部分(星期五、星期六、星期天),每个部分都有不同的数据和不同的行数。选中时,选定的行将展开,但其他两个部分中具有相同索引的行也将展开。我只希望展开单个选定行

有没有办法在didSelectRowAtIndexPath方法中获取该部分的值,并在我的heightForRowAtIndexPath方法中使用该值,以使所有其他行保持其未展开的大小

以下方法都在my UITableView子类中:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
customCell *cell = [tableView cellForRowAtIndexPath:indexPath];

//Close row if tapped a second time
if(self.currentSelection == indexPath.row) {
    self.currentSelection = -1;
}
//Otherwise, expand row
else {
    self.currentSelection = indexPath.row;
}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
int rowHeight;
if ([indexPath row] == self.currentSelection) {
    rowHeight = 185;
} else rowHeight = 44;
return rowHeight;
}

检查nsindepath。此对象包含节作为属性。

将索引路径保存为您的选择,而不仅仅是行。此时,您正在保存,比如第2行,并且每个部分都有一个第2行,因此该行在所有部分中都在扩展

您可以按如下方式比较索引路径:

if([indexPath1 isEqual:indexPath2])
    // Do your thing
更好的是,
UITableView
有一个
indexPathForSelectedRow
属性,因此您甚至不需要自己的变量来跟踪:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
int rowHeight;
if ([indexPath isEqual:tableView.indexPathForSelectedRow]) {
    rowHeight = 185;
} else rowHeight = 44;
return rowHeight;
}

您需要根据要展开的单元格而不仅仅是行来检查
[indexPath section]
。非常感谢!这非常有效。我不知道indexPathForSelectedRow的存在。