0

UITableView で、ユーザーが同じ行をタップした回数を確認したいと思います。

ユーザーが同じ行を 3 回タップした場合、その行を UITableView から削除します。

誰でも私を解決策に導いてもらえますか? 私はやってみました:

for (NSIndexPath *indexPath in self.tableView.indexPathsForSelectedRows) {
    count = count + 1;
    NSLog(@"rowCount %d indexPath.row %@", count, indexPath);
}

ただし、これは行がユーザーによってタップされた回数を増やしません。

4

4 に答える 4

1

NSMutableDictionaryキーが indexPath で、値が現在のタップ数であるプロパティを作成します。例えば

@property (nonatomic,strong) NSMutableDictionary *rowTaps;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

if (!self.rowTaps) {
  self.rowTaps = [NSMutableDictionary dictionary];
}

[self.rowTaps setObject:[NSNumber numberWithInt:[(NSNumber *)[self.rowTaps objectForKey:indexPath]intValue]] forKey:indexPath];

if ([(NSNumber *)[self.rowTaps objectForKey:indexPath]intValue] == 3) {
     // Perform Delete Action - Delete row, and update datasource
}
}

セルで選択が行われるたびにディクショナリでチェックを実行してから、必要なアクションを実行します。

于 2013-10-13T18:03:47.847 に答える
1

ユーザーが行を 3 回同じセルを選択した場合にのみ行を削除するとします。

lastSelectedRow最後に選択した行を保持する 別の変数を作成します。(実装行の下に作成)

@implementation myViewController
{
   NSInteger = lastSelectedRow;
}

次に、行が最後に選択したものと同じであることを確認し、インクリメントして、行を削除する必要があるかどうかを確認する必要があります。

for (NSIndexPath *indexPath in self.tableView.indexPathsForSelectedRows) {

    // If the last selected row is the same, increment the counter, else reset the counter to 1
    if (indexPath.row == lastSelectedRow) count++;
    else
    {
      lastSelectedRow = indexPath.row;
      count = 1;
    }

    // Now we verify if the user selected the row 3 times and delete the row if so
    if (count >= 3) [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

    NSLog(@"rowCount %d indexPath.row %@", count, indexPath);
}

それが役に立てば幸い。

于 2013-10-13T18:09:24.953 に答える
0

NSMutableDictionary を作成し、キーをセル インデックスとして設定し、値にカウントを設定します (最初は 1)。カウントが 3 に達すると、必要なことを行うことができます。

 //fake cell index (from indexpath)
    NSNumber * pretendCellIndex = [NSNumber numberWithInt:4];

    //Dict to track ocurrences
    NSMutableDictionary *index = [[NSMutableDictionary alloc]init];

    //If the dict has the index, increment
    if ([index objectForKey:pretendCellIndex]) {

        //Get value for the index
        int addOne = [[index objectForKey:pretendCellIndex] intValue];
        addOne++;

        //Add back to index
        [index setObject:[NSNumber numberWithInt:addOne] forKey:pretendCellIndex];

        //Your condition
        if (addOne>=3) {
            //do what you need
        }
    }else{
    //Havent seen so add
        [index setObject:[NSNumber numberWithInt:1] forKey:pretendCellIndex];
    }
于 2013-10-13T18:03:41.363 に答える