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 回答