在表格滚动中的自定义表格单元格中添加子视图子视图消失了该子视图返回单元格的操作

时间:2014-07-23 12:32:52

标签: ios objective-c uitableview uiview

我在自定义表格单元格中长按时添加子视图但是当我滚动表格时,子视图消失

当我向后滚动时,该子视图仍然显示/显示在该单元格上,或者换句话说我说单元格仍然被选中

- (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];
        }
    }
}

2 个答案:

答案 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