我在自定义表格单元格中长按时添加子视图但是当我滚动表格时,子视图消失。
当我向后滚动时,该子视图仍然显示/显示在该单元格上,或者换句话说我说单元格仍然被选中?
- (IBAction)click4:(id)sender
{
//
self.lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
[self.lpgr setMinimumPressDuration:1];
[self.contentView addGestureRecognizer:self.lpgr];
}
- (void)handleLongPress:(UILongPressGestureRecognizer *)sender
{
if ([sender isEqual:self.lpgr]) {
if (sender.state == UIGestureRecognizerStateBegan)
{
self.actionButtonView = [[PerformAction alloc]initWithNibName:@"PerformAction" bundle:Nil];
[self.thirdImageView addSubview:self.actionButtonView.view];
}
}
}
答案 0 :(得分:1)
一切都按预期工作。我认为你cellForRowAtIndexPath
的工作原理如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[self cellIdentifierForIndexPath:indexPath] forIndexPath:indexPath];
id item = [self itemAtIndexPath:indexPath];
// some configuration here.
return cell;
}
因此,当您到达dequeueReusableCellWithIdentifier
时,您会在笔尖(或故事板)中设计单元格。
如果您想要实现您想要做的事情,您可以添加视图并根据单元状态隐藏它。长按更新此状态。
答案 1 :(得分:0)
初始化自定义UITableViewCell
,带有单独的标识符。这将加载UITableView
中的所有单元格,并在滚动UITableView
时保持原样。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdentifier = [NSString stringWithFormat:@"CellIdentifier%d%d",indexPath.section,indexPath.row];
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier: cellIdentifier];
if (cell == nil)
{
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: cellIdentifier];
}
return cell;
}
但是这也会消耗更多内存,因为所有单元格都加载到UITableView
。