2

我有一个表格视图,当用户选择特定行时,我想显示一个简单的操作表来选择新条目是来自现有联系人还是创建新联系人。我这样显示操作表:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ( indexPath.row != 0  )
    {
        //Select the entry
    }
    else
    {
        UITableViewCell *selectedRow = [tableView cellForRowAtIndexPath:indexPath];
        UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"New Contact", @"Existing Contact", nil];

        [sheet showFromRect:selectedRow.frame inView:tableView animated:YES];
        return;
    }

    //Do some other stuff...

}

根据文档...

讨论

在 iPad 上,此方法在弹出框中显示操作表,其箭头指向视图的指定矩形。弹出框不与指定的矩形重叠。

然而......操作表显示在我的视图底部,而不是侧面的弹出窗口。tableview 是 splitviewcontroller 中的主视图

关于为什么这不起作用的任何想法?

4

2 回答 2

1

我遇到了同样的问题,这个答案对我有帮助:

在 iPad 上使用 UIActionSheet

如果您从已经在弹出框内的 UIBarButtonItem 或 UIToolbar 显示它,那么它会以与 iPhone 上类似的方式显示

对我来说,表格显示的是拆分视图,并且在横向显示时,该表格显示为弹出框(您可以通过滑动隐藏的横向面板),因此一旦我将设备转为横向 UIActionSheet 开始显示在弹出框。原因是我用粗体表示的:它不能从另一个弹出框内显示为弹出框。

于 2013-07-22T09:24:12.907 回答
0

Instead of popping from the tableView, try converting the cell bounds to the topmost view (the controller's and pop it from there...

CGRect frame = [self.view convertRect:cell.bounds fromView:cell];
[sheet showFromRect:frame inView:self.view animated:YES];

Might be the case that there's more hierarchy inside the tableView and it's breaking your stuff.

于 2013-01-03T20:06:39.743 回答