如何使用滑动来更改tableview中特定行的标签

时间:2014-07-25 11:43:58

标签: ios uitableview ios7

在表视图控制器的ViewDidLoad中,我首先添加了SwipeGuesture和处理程序 "Swipecell"

     UISwipeGestureRecognizer *showExtrasSwipe = [[UISwipeGestureRecognizer alloc] 
     initWithTarget:self action:@selector(Swipecell:)];
     showExtrasSwipe.direction = UISwipeGestureRecognizerDirectionRight| 
     UISwipeGestureRecognizerDirectionLeft;
     [self.tableView addGestureRecognizer:showExtrasSwipe];

     //Here I define the handler:
     -(void)Swipecell:(UISwipeGestureRecognizer *)gesture
     {
     //Taking gesture location
     CGPoint location = [gesture locationInView:_tableview];
     //Getting IndexPath for that location in tableview
     NSIndexPath *swipedIndexPath = [self.tableView indexPathForRowAtPoint:location];
     UITableViewCell *swipedCell  = [self.tableView cellForRowAtIndexPath:swipedIndexPath];
     NSString *data = [self.dataArray objectAtIndex:swipedIndexPath.row];
     //Setting the label of the cell
     [swipedCell.textLabel setText:data];
}

但它只适用于第一排。任何人都可以帮助我或给我更好的解决方案吗?如果您喜欢这个问题,请不要忘记评分。

3 个答案:

答案 0 :(得分:1)

请在cellForRowAtIndexPath方法中添加滑动手势,这样手势就会添加到每个单元格中。

答案 1 :(得分:0)

它有效...在iOS 7.1模拟器上测试

- (void)viewDidLoad
{
    _tableview = (UITableView*)self.view;
    [super viewDidLoad];
    UISwipeGestureRecognizer *showExtrasSwipe = [[UISwipeGestureRecognizer alloc]
                                                 initWithTarget:self action:@selector(Swipecell:)];
    showExtrasSwipe.direction = UISwipeGestureRecognizerDirectionRight|
    UISwipeGestureRecognizerDirectionLeft;
    [self.tableView addGestureRecognizer:showExtrasSwipe];
}

-(void)Swipecell:(UISwipeGestureRecognizer *)gesture
{
    CGPoint location = [gesture locationInView:_tableview];
    NSIndexPath *swipedIndexPath = [self.tableView indexPathForRowAtPoint:location];
    UITableViewCell *swipedCell  = [self.tableView cellForRowAtIndexPath:swipedIndexPath];
    swipedCell.detailTextLabel.text = [NSString stringWithFormat:@"%i", swipedIndexPath.row];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 55;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"%i", indexPath.row];
    cell.detailTextLabel.text = @" ";
    return cell;
}

答案 2 :(得分:0)

将[gesture locationInView:_tableview]更改为[gesture locationInView:self.tableview]。我在推荐tableView outlet。