我有一个包含海关单元格的表格,其中包含子类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.
我做错了什么?
答案 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的回答所说的那样,不要做像那样的分配