0

ボタンをクリックしたときに UITableViewCell の IndexPath を見つけようとしていますが、UIAlert も使用しているため、簡単には見えません。これは私が使用している私のコードです:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";


    UpdatesTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {

        NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"UpdatesTableViewCell" owner:nil options:nil];

        for (UIView *view in views) {
            if([view isKindOfClass:[UITableViewCell class]])
            {
                cell = (UpdatesTableViewCell*)view;
            }
        }
    }


    cell.textLabel.text = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"Title"];
    cell.detailTextLabel.text = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"Description"];

    //////////This button is the one sending the action////////////////
    [cell.deletebutton addTarget:self action:@selector(deletetherow:) forControlEvents:UIControlEventTouchUpInside];


    imagepath = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"Photo"];

    if([imagepath isEqualToString:@"(null)"])
    {
        cell.imageView.image = [UIImage imageNamed:@"noimage.png"];
        cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
        cell.imageView.clipsToBounds = YES; 

    }
    else {

        cell.imageView.image = [[[UIImage alloc] initWithContentsOfFile:imagepath] autorelease];

    }
    cell.backgroundColor = [UIColor clearColor];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;

}

- (void)deletetherow:(id)sender{

UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Title"
                                                  message:@"Delete it ?"
                                                 delegate:self
                                        cancelButtonTitle:@"Cancel"
                                        otherButtonTitles:@"delete", nil];
[message show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];

if([title isEqualToString:@"Eliminar"])
{

        NSLog(@"OFFLINE");
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);        
        NSString *documentsDirectory = [paths objectAtIndex:0];        
        NSString *path = [documentsDirectory stringByAppendingPathComponent:@"datatesting.plist"];
        libraryContent = [[NSMutableArray alloc] initWithContentsOfFile:path];
        [libraryContent removeObjectAtIndex:0]; ///// Here instead 0, I want to put the indexpath to know what row content to delete.
        NSLog(@"delete the Row:%@",libraryContent);
        [libraryContent writeToFile:path atomically:YES];

        dao = [[Dfetch alloc] initWithLibraryName:@"Diario"];
        [self.tableviewnew reloadData];

    }
  }
}

私の質問は、どうすれば alertView メソッド内で indexpath.row を取得できますか?

4

2 に答える 2

3

UIButton にタグを付けて indexPath.row でタグを付けると、ボタンを押したときに (id)sender オブジェクトからタグを取得し、そこからタグを取得できます。

于 2012-08-22T09:34:18.633 に答える
0

問題が解決したかどうかはわかりませんが、メソッドに値を渡すには、いくつかの可能性があります。

  • インスタンス変数を宣言し、値を代入してメソッドで使用する
  • グローバル変数を宣言し (悪い考えです! )、値を代入し、メソッドで使用します
  • メソッドのパラメーターとして使用します (プロトコルなどによってメソッド シグネチャが強制されていない場合にのみ機能します)。
于 2012-08-22T09:34:26.337 に答える