从UITouch调用UITableView方法

时间:2013-03-11 15:04:51

标签: objective-c xcode uitableview uitouch

我有一个包含海关单元格的表格,其中包含子类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);

}

但我总是得索引= 0.

我做错了什么?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

并且正如Dave Leverton的回答所说的那样,不要做像那样的分配