1

我有一个包含 6 个单元格和 6 个分隔符的静态表格视图。我需要单元格 1 的索引为 0,单元格 6 的索引为 5,这可能吗?我下面的代码不起作用,因为每个单元格都在一个单独的部分中,所以它认为每次都选择了单元格 0,并且它再次使用相同的数据填充单元格,它认为它的单元格 0。

-(void) longTap:(UILongPressGestureRecognizer *)gestureRecognizer
{
    NSLog(@"gestureRecognizer= %@",gestureRecognizer);
    if ([gestureRecognizer state] == UIGestureRecognizerStateEnded)
    {
        NSLog(@"longTap began");

        CGPoint p = [gestureRecognizer locationInView:self.tableView];

        NSIndexPath *indexPath = [myTable indexPathForRowAtPoint:p];
        if (indexPath == nil)
        {
            NSLog(@"long press on table view but not on a row");
        }
        else
        {
            NSLog(@"long press on table view at row %d", indexPath.row);

            switch (indexPath.row)
            {
                case 0:
                    del.tableRowNumber = 0;
                    break;
                case 1:
                    del.tableRowNumber = 1;
                    break;
                case 2:
                    del.tableRowNumber = 2;
                    break;
                case 3:
                    del.tableRowNumber = 3;
                    break;
                case 4:
                    del.tableRowNumber = 4;
                    break;
                case 5:
                    del.tableRowNumber = 5;
                    break;
            }
        }

        UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"MealPlannerRecipeTypeViewController"];
        [self.navigationController pushViewController:controller animated:YES];
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    RecipeInfo *recipeInfo = recipeInfoArray[indexPath.row];
    cell.textLabel.text = recipeInfo.name;
    return cell;
}

我刚刚尝试过这个来获取标签:

CGPoint p = [gestureRecognizer locationInView:myTable];
        NSIndexPath *indexPath = [myTable indexPathForRowAtPoint:p];
        UITableViewCell *cell = [myTable cellForRowAtIndexPath:indexPath];

        NSLog(@"TAG IS : %i", cell.tag);

但是,每个单元格仍然用我表中第一个单元格的值标记?

4

1 回答 1

1

通常,为了实现“直接”计数(即,当 section 中的单元格编号在 section 中n+1的单元格之后继续时n),您需要将所有前面部分中的总行数添加到当前行号。

如果您知道每节的行数是 1,则可以采用“直接”计数的快捷方式,并使用节号而不是行号:

RecipeInfo *recipeInfo = recipeInfoArray[indexPath.section];

每节一行的确切公式是indexPath.section * 1 + indexPath.row,但indexPath.row始终为零,我们可以将乘法除以 1。您还应该使用

del.tableRowNumber=indexPath.section;

switch在长按处理程序中替换您的声明。

于 2013-09-07T09:29:48.070 回答