我有一个表格视图,当用户选择特定行时,我想显示一个简单的操作表,以选择新条目是来自现有联系人还是创建新联系人。我这样显示了行动表:
- (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中的主视图
有关为什么不起作用的任何想法?
答案 0 :(得分:1)
我遇到了同样的问题,这个答案对我有帮助:
如果您从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中存在更多层次结构并且它正在打破你的东西。