我想知道为什么这不起作用请帮助我。 这是我的代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
*)indexPath
{
if (selectedIndexPath == indexPath) {
selectedIndexPath = nil;
} else {
selectedIndexPath = indexPath;
}
[self.tableView deselectRowAtIndexPath : indexPath animated : NO];
[tableView beginUpdates];
[tableView endUpdates];
}
答案 0 :(得分:0)
确保您保留selectedIndexPath
,以便无意中将其设置为nil
。
@interface YourClass
@property (nonatomic, strong) NSIndexPath *selectedIndexPath;
@end
然后将变量称为self.selectedIndexPath
,你应该没问题。
但还有第二个警告。 NSIndexPath
是一个对象,因此运算符==
只会比较指针地址。显然,那些将永远是不同的,因为一个是你的变量,另一个是方法的私有变量!您想要使用的是
if ([indexPath isEqualTo:selectedIndexPath]) // not tested
或
if (indexPath.row == selectedIndexPath.row &&
indexPath.section == selectedIndexPath.section)
答案 1 :(得分:0)
NSIndexPath
对象由行和部分两部分组成。 indexPathForRow:inSection:
方法从行和节索引号创建NSIndexPath
对象。确保正确创建selectedIndexPath
。请按照此apple reference了解详情。