UIActionSheet没有在popover中显示

时间:2013-01-03 19:55:11

标签: ios ipad uiactionsheet

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

- (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中的主视图

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

2 个答案:

答案 0 :(得分:1)

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

Using UIActionSheet on iPad

  

如果您从UIBarButtonItem或UIToolbar 显示它   在一个弹出窗口中,然后以类似的方式呈现它   iPhone

对我来说,桌子是在分割视图中显示的,当在景观上时,桌子被呈现为一个弹出窗口(可以用滑动隐藏的侧面板),所以一旦我将设备转向横向,UIActionSheet就开始了在一个弹出窗口中显示。原因是我加入了粗体:它不能作为另一个弹出窗口内的弹出窗口显示。

答案 1 :(得分:0)

不是从tableView弹出,而是尝试将单元格边界转换为最顶层视图(控制器并从那里弹出...

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

可能是tableView中存在更多层次结构并且它正在打破你的东西。