0

我有一个带有海关单元格的表格,它有子类UITableViewCells和我使用的控制触摸UITouch(基于本教程的代码http://gregprice.co.uk/blog/?p=280)我需要内部touchesEnded方法获取单元格的索引,它是触碰。

我尝试:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

   //some code

   UITableView *parentTable = (UITableView *)self.superview;
   NSIndexPath *index = [NSIndexPath alloc];
   index = [parentTable indexPathForSelectedRow];
   NSLog(@"Call, x= %f, index=%d", xPos, index.row);

}

但我总是有 index=0。

我做错了什么?

4

2 回答 2

0

不确定这是否会导致问题,但像您在这里一样调用“alloc”是一种不好的做法。我将删除带有 alloc 的行(因为这是为您未初始化或使用的对象创建内存),并且仅在线定义了 NSIndexPath 对象:

UITableView *parentTable = (UITableView *)self.superview;
NSIndexPath *index = [parentTable indexPathForSelectedRow];
NSLog(@"Call, x= %f, index=%d", xPos, index.row);
于 2013-03-11T15:12:46.467 回答
0

似乎您正在采取一种非常全面的方式来选择 UITableView 中的一行。将 UITableView 的委托和数据源设置为您正在使用的类,然后实现其协议方法,您可以在 UITableViewDelegate 和 UITableViewDataSource 参考中找到这些方法。完成后,您可以使用此方法确定在表中选择了哪一行

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

也许您已经知道这一点,但听起来您是 iOS 开发的新手,我不明白您为什么要手动这样做。

并且正如戴夫莱弗顿的回答所说,不要做这样的分配

于 2013-03-11T15:37:47.320 回答