0
votes

I developed one application. I have one issue in that application.
I want to add the scrollview to the tableview cell. I created the tableview cell by using below code.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"Cell";
    ExistingCasesCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[ExistingCasesCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
//Adding SwipeGestures to a cell
        UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
        [swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
        [cell addGestureRecognizer:swipeRight];
        swipeRight=nil;

        UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
        [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
        [cell addGestureRecognizer:swipeLeft];
        swipeLeft=nil;
    }
    cell.buttonEdit.tag=tagForButtonCustomCell*indexPath.row+0;
    [cell.buttonEdit addTarget:self action:@selector(btnOptionsClicked:) forControlEvents:UIControlEventTouchUpInside];
    cell.buttonShare.tag=tagForButtonCustomCell*indexPath.row+1;
    [cell.buttonShare addTarget:self action:@selector(btnOptionsClicked:) forControlEvents:UIControlEventTouchUpInside];
    cell.buttonAdd.tag=tagForButtonCustomCell*indexPath.row+2;
    [cell.buttonAdd addTarget:self action:@selector(btnOptionsClicked:) forControlEvents:UIControlEventTouchUpInside];
    cell.buttonDelete.tag=tagForButtonCustomCell*indexPath.row+3;
    [cell.buttonDelete addTarget:self action:@selector(btnOptionsClicked:) forControlEvents:UIControlEventTouchUpInside];
    Item *itemObject = [arrSavedDocuments objectAtIndex:indexPath.row];
    UILabel *labelDocumentName=(UILabel *)[cell.contentView viewWithTag:tagForLabelDocument];
    labelDocumentName.text=itemObject.itemTypeName;
    UILabel *labelNumOfPages=(UILabel *)[cell.contentView viewWithTag:tagForLabelNumberOfPages];
    labelNumOfPages.text=[NSString stringWithFormat:@"%d", [[itemObject.itemToPage allObjects]count]];
    UILabel *labelDate=(UILabel *)[cell.contentView viewWithTag:tagForLabelDate];
    labelDate.text=[self parseDateString:itemObject.itemCreatedTimeStamp];
    return cell;
}

Here ExistingCasesCustomCell is my custom cell class.
In init method of ExistingCasesCustomCell i added the scrollview with subviews as 4 buttons (buttonEdit, buttonShare, buttonAdd and buttonDelete). Initially scrollview is in hidden position
My Requirement is whenever user swipe on cell the scrollview should display. Whenever user swipe on cell i showed the scrollview.
But my problem is whenever i scroll the tableview the scroll view is displayed in other cells also. How can i resolve this issue.

Thanks in advance,
Rambabu N

1
Make a Bool variable in ExistingCasesCustomCell class, with value NO. Change it to Yes when swiped. And place a check in cellForRowAtIndexPath(), if this cell.yourVar is NO then hide the scrollview otherwise Show the scrollView.Yogendra

1 Answers

0
votes

Your problem happens because the cells are recycled in a UITableView. Go to your ExistingCasesCustomCell class, override the prepareForReuse method and hide the scroll view.

-(void) prepareForReuse {
    self.scrollView.hidden = YES;
}