web-dev-qa-db-ja.com

UITableViewCellに赤い削除ボタンをプログラムで表示することは可能ですか?

ここには同様の質問がたくさんありますが、この質問を具体的に尋ねるとは思いません。つまり、UITableView行の右側に赤い削除ボタンを強制的に表示する方法はありますか?

私が尋ねる理由は、次のように2つのUISwipeGestureRecognizersを使用してテーブルビューの動作を変更しようとしているためです。

  • 1本の指でスワイプすると、カスタムアクションが呼び出され(赤い削除ボタンが表示されるのではなく、現在の動作です)、

  • 2本指でスワイプすると、デフォルトの1本指でスワイプする動作が呼び出されます。つまり、赤い削除ボタンが表示されます。

SDKのドキュメントを調べましたが、赤いボタンを表示する方法が見つかりません。そのため、上記の提案されたUIスキームは、赤い削除ボタンを最初から手動で作成して作成しようとしないと実装できないと思います。組み込みの動作をエミュレートします。

どんな助けでも大歓迎です。

26
glenc

DoubleFingerSwipeジェスチャのselectorメソッドで、1つの変数を設定し、スワイプされた行の数として割り当てて、テーブルをリロードします。の中に

- (UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == yourVariable) return UITableViewCellEditingStyleDelete;
    else return UITableViewCellEditingStyleNone;
}

私はそれがあなたの問題のために働くと思います。

4
iBhavik
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *CellIdentifier = [NSString stringWithFormat:@"cell %d",indexPath.row];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        if(TableMethod==1)
        {
            UIButton *delete_btn=[UIButton buttonWithType:UIButtonTypeCustom];
            [delete_btn setFrame:CGRectMake(10,15,25,25)];
            delete_btn.tag=indexPath.row;
            [delete_btn setImage:[UIImage imageNamed:@"remove_Icone.png"] forState:UIControlStateNormal];
            [delete_btn addTarget:self action:@selector(delete_btn:) forControlEvents:UIControlEventTouchUpInside];
            [cell addSubview:delete_btn];
        }
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    // Configure the cell.
    return cell;
}


- (IBAction)delete_btn:(id)sender
{
    UIButton *buttontag = (UIButton *)sender;
    //NSLog(@"%d",buttontag.tag);
    Delete_row = buttontag.tag;

    UIAlertView *Alert = [[UIAlertView alloc]initWithTitle:@"Delete Reservation"   message:@"Are you sure to want Delete Reservation ??" delegate:self cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel",nil];
    Alert.tag=1;
    [Alert show];
    [Alert release];
}

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{
    if(alertView.tag==1)
    {
        if(buttonIndex == 0)
        {
            // delete row
        }
    }
}
0
Bhavesh Nayi