0

我有UITableViewController当用户单击具有附件类型 =UITableViewCellAccessoryDe​​tailDisclosureButton的单元格时弹出 UIActionSheet ;

现在该方法 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {工作正常,除了我不知道用户点击了哪个单元格。

例如,我可以声明一个属性,在其中保存选定的单元格,didSelectRowAtIndexPath:(NSIndexPath *)indexPath {但我认为必须有更好的方法。

4

3 回答 3

3

我通常将操作表的标签设置为索引路径的行,但这仅在您不关心节号时才有效。如果您也确实需要该部分,那么创建一个属性将是最好的方法。

你也可以弄乱一个类别和相关的对象,但对我个人来说,这太复杂了。

于 2013-02-11T15:38:54.337 回答
2

实现此UITableView委托方法以在点击辅助按钮时获取单元格的索引路径:

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
}
于 2013-02-11T15:46:25.360 回答
2

如果您的表格只有一个部分,您可以在标签中存储显示操作表的哪一行,如下所示。

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
    NSString *title = [NSString stringWithFormat:@"Sheet for row %i", indexPath.row];
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:title delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Option 1", @"Option 2", nil];
    [sheet setTag:indexPath.row];
    [sheet showInView:self.view];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    int row = actionSheet.tag;
    NSLog(@"Selected actionSheet buttonIndex %i for row: %i", buttonIndex, row);
}

这可能是最简单的方法,但我不会说这是最好的方法。

于 2013-02-11T15:48:09.257 回答