我正在尝试在单击UIButton时显示UIPopoverController。这是我的代码:
- (IBAction)showColumnChooser:(id)sender {
ColumnChooserTVC *vc = [[ColumnChooserTVC alloc] init];
[vc setSelections:allColumns];
[vc setDelegate:self];
UIPopoverController *pc = [[UIPopoverController alloc] initWithContentViewController:vc];
[pc presentPopoverFromRect:[sender frame] inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
[vc release];
}
箭头方向为“Any”,它完全遮挡了按钮,这就是它的样子:
如果我将方向设为“正确”,它会更好一些,但仍然有一些弹出窗口和按钮之间的空间,它似乎不对。 我不想做一些“技巧”或“黑客”并在试验/错误的基础上使用CGRect,我想知道这样做的正确方法是什么?感谢。
以下是Neckto要求的界面构建器中的按钮:
答案 0 :(得分:50)
我认为你正在混合坐标系。在视图层次结构中的每个级别,移动原点。因此[sender frame]
中self.view
的位置不是按钮所在的位置。
尝试:
[pc presentPopoverFromRect:[sender bounds]
inView:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
答案 1 :(得分:0)
Swift,Swift,Swift当然!
pc.presentPopoverFromRect(sender.bounds, inView: sender,
permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true)