Пользовательская функция прокрутки в UITableViewCell не работает - PullRequest
0 голосов
/ 09 декабря 2010

Эй!Мне нужно добавить счетчик в uitableviewcell таким образом, чтобы при запуске функции прокрутки счетчик увеличивался в соответствующей ячейке, а при нажатии счетчик уменьшался ... Может кто-нибудь помочь мне в этом ...

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 UITableViewCell *cell = nil;
 NSString *CellIdentifier = @"sample";
        if (cell == nil) {
  cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

 }
 UISwipeGestureRecognizer *recognizer;

 recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
 [self addGestureRecognizer:recognizer];
    self.tapRecognizer = (UITapGestureRecognizer *)recognizer;
    recognizer.delegate = self;
 [recognizer release];


 recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];

 [self addGestureRecognizer:recognizer];
 [recognizer release];
UILabel *cookieLabel = [[UILabel alloc] initWithFrame:CGRectMake(5,5, 120,30)];
 cookieLabel.text = @"hello";
 cookieLabel.font = [UIFont systemFontOfSize:15.0f];
 cookieLabel.textColor = [UIColor blackColor];
 cookieLabel.backgroundColor = [UIColor redColor];
 [cell.contentView addSubview:cookieLabel];
 [cookieLabel release];
 cell.selectionStyle = UITableViewCellSelectionStyleGray;

 costLabel = [[UILabel alloc] initWithFrame:CGRectMake( 200, 5, 230, 30)];
 //costLabel.text = handleSwipeFrom:;
 costLabel.font = [UIFont systemFontOfSize:15.0f];
 costLabel.textColor = [UIColor blackColor];
 costLabel.backgroundColor = [UIColor greenColor];
 [cell.contentView addSubview:costLabel];
 [costLabel release];
 [self setUserInteractionEnabled:YES];

return cell;
}

Ответы [ 2 ]

3 голосов
/ 08 марта 2011

Не добавляйте UISwipeGestureRecognizer в ячейку. Добавьте его в UITableView.

Я использовал TISwipeableTableView в качестве основы и сильно изменил его, чтобы он работал правильно (они выполняли свою собственную обработку касаний, что приводило к «странным, не родным» ощущениям)

- (void)didSwipe:(UIGestureRecognizer *)gestureRecognizer {
  if ([MRUserDefaults sharedMRUserDefaults].isSwipeMenuEnabled) {
    if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
      CGPoint swipeLocation = [gestureRecognizer locationInView:self];
      NSIndexPath *swipedIndexPath = [self indexPathForRowAtPoint:swipeLocation];
      TISwipeableTableViewCell* swipedCell = (TISwipeableTableViewCell *)[self cellForRowAtIndexPath:swipedIndexPath];

      if ([swipedCell isKindOfClass:[TISwipeableTableViewCell class]]) {
        if (![swipedIndexPath isEqual:indexOfVisibleBackView]) {
          [self hideVisibleBackView:YES];
          [swipedCell revealBackView];
          [self setIndexOfVisibleBackView:swipedIndexPath];  

          if (swipeDelegate && [swipeDelegate respondsToSelector:@selector(tableView:didSwipeCellAtIndexPath:)]){
            [swipeDelegate tableView:self didSwipeCellAtIndexPath:[self indexPathForRowAtPoint:swipeLocation]];
          }        
        }
      }
    }  
  }
}

- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style {
  if ((self = [super initWithFrame:frame style:style])) {
    if ([MRUserDefaults sharedMRUserDefaults].isSwipeMenuEnabled) {
      UIGestureRecognizer *swipeGesture = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)] autorelease];
      [self addGestureRecognizer:swipeGesture];
    }
  }
  return self;
}

Это должно помочь вам начать.

0 голосов
/ 10 декабря 2010

[ячейка addGestureRecognizer: распознаватель]

...