0

私はこのボタンドロワーを実装し、それにいくつかのボタンを追加しました。とはいえ、ドロワーのこれらのボタンから適切なデリゲートメソッドにメッセージを送信して、tableViewからアイテムを削除する方法がわかりません。

正しいindexPathを取得するにはどうすればよいですか?チェックボタンが切り替えられたuitableviewcellの新しいNSIndexを作成する必要がありますか?

ありがとう

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    HHPanningTableViewCell *cell = (HHPanningTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    NSInteger directionMask = indexPath.row % 5;
    if (cell == nil) {
        cell = [[HHPanningTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];




    UIView *drawerView = [[UIView alloc] initWithFrame:cell.frame];

    drawerView.backgroundColor = [UIColor grayColor];
    cell.drawerView = drawerView;
        UIImage *checkImage = [UIImage imageNamed:@"check.png"];
        UIButton *checkButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [checkButton setImage:checkImage forState:UIControlStateNormal];
        cell.frame = CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height);
        checkButton.frame = CGRectMake(10, 10, checkImage.size.width, checkImage.size.height);
        [drawerView addSubview:checkButton];

        [checkButton addTarget:nil action:@selector(onCheckMarkTap:) forControlEvents:UIControlEventTouchUpInside];

    }

- (void)onCheckMarkTap {
    NSLog(@"Delete the cell");

}

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        }

}
4

3 に答える 3

1

この質問にはすでに答えがあります。イベントでのターゲット/アクションまたはジェスチャレコグナイザーを使用して、テーブルビューの座標系でタップされたボタンの座標を取得し、UITableViewのメソッド-indexPathForRowAtPoint:を使用して、そのポイントでボタンを含むセルのindexPathを取得します。

于 2013-03-24T01:18:00.810 に答える
0

以内にcellForRowAtIndexPath:

checkButton.tag = indexPath.row

また、onCheckMarkTap内で、次のようにします。

- (void)onCheckMarkTap : (id) sender
{
    if (sender.tag == 0)
    ///code
    else if (sender.tag == 1)
    ///code

}
于 2013-03-24T01:04:25.393 に答える
-2

私自身のコードでこのような問題を処理する方法は、「」をサブクラス化することです。ここで、「 」または「」ivarをサブクラス化されたボタンUIButtonに追加します。名前を「」にしましょう。NSIndexPathtableRowStangButton

サブクラス化されたボタンを使用すると、「indexPath」を介してセルを作成するときに「」ivarにデータを入力できますcellForRowAtIndexPath:

次に、ボタンを押すと、どのボタンが押されたか、どの行にあったかがわかります。

"tableView:didSelectRowAtIndexPath:"セル内のボタンがタッチされたときにテーブルビューデリゲートメソッドが呼び出されるかどうかを確認することもできます。

于 2013-03-24T01:04:42.023 に答える