iOS 在 Indexpath 的 TableCell 上添加标签
Posted
技术标签:
【中文标题】iOS 在 Indexpath 的 TableCell 上添加标签【英文标题】:iOS Add Label on TableCell at Indexpath 【发布时间】:2015-05-07 21:50:10 【问题描述】:每次用户双击我的单元格时,我都会尝试显示一个标签。我可以检测到水龙头,并且可以从中执行代码,但是标签有问题。由于某种原因,标签被添加了两个有时三个单元格,低于应该添加的一个单元格。我需要在被点击的单元格上添加标签,应该不难做到。
这是我的代码,在此先感谢。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
[tableView deselectRowAtIndexPath:indexPath animated:YES];
static NSString *CellIdentifier = @"cell";
Cell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (nil == cell)
cell = [[Cell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
PFObject *tempObject = [_myArray objectAtIndex:indexPath.row];
NSString *currentUser = [[PFUser currentUser]username];
//NSLog(@"%@",tempObject);
NSArray *test = [tempObject valueForKey:@"Like"];
//NSLog(@"%lu",(unsigned long)test.count);
NSTimeInterval now = [[[NSDate alloc] init] timeIntervalSince1970];
if ((now - lastClick < 0.3) & [indexPath isEqual:lastIndexPath])
//cell.test.hidden = NO;
CGRect frame = CGRectMake(0,0, 80, 40);
UILabel *label1 = [[UILabel alloc]init];
label1.frame = frame;
label1.text = @"first label";
[cell.contentView addSubview:label1];
if ([test containsObject:currentUser])
NSLog(@"1");
[tempObject removeObject:currentUser forKey:@"Like"];
[tempObject saveInBackground];
else
NSLog(@"2");
[tempObject addUniqueObject:currentUser forKey:@"Like"];
[tempObject saveInBackground];
lastClick = now;
lastIndexPath = indexPath;
【问题讨论】:
【参考方案1】:您不应该在 didSelectRowAtIndexPath
方法中对单元格进行 deque。
Cell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (nil == cell)
cell = [[Cell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
改为使用-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
检索选定索引路径处的单元格,如下所示。
Cell *cell = [tableView cellForRowAtIndexPath:indexPath];
如果需要,您可以在didSelectRowAtIndexPath
方法的末尾调用下面的方法。
[tableView reloadRowsAtIndexPaths: [NSArray arrayWithObject: indexPath]
withRowAnimation: UITableViewRowAnimationNone];
【讨论】:
@iKrish 我能否检测到cellForRowAtIndexPath
中的单元格是否被点击?
只需将代码的第一部分替换为代码的第二部分,问题将得到解决。
@iKrish 我刚刚做了,现在一切都好。感谢您的快速回复!
它不会让我太早 :) 出于某种原因,当我点击它时,它还会在另一个单元格上添加标签。
@iKrish 它仍在索引处添加标签,但也在其下方添加了一些标签,而无需点击这些标签。以上是关于iOS 在 Indexpath 的 TableCell 上添加标签的主要内容,如果未能解决你的问题,请参考以下文章
iOS 在 Indexpath 的 TableCell 上添加标签
iOS 手势获取cell位置点击cell获取indexpath