UIPopoverController presentPopoverFromRect问题

时间:2011-09-04 10:04:41

标签: objective-c ios cocoa-touch uipopovercontroller

我正在尝试在单击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”,它完全遮挡了按钮,这就是它的样子: enter image description here

如果我将方向设为“正确”,它会更好一些,但仍然有一些弹出窗口和按钮之间的空间,它似乎不对。 enter image description here 我不想做一些“技巧”或“黑客”并在试验/错误的基础上使用CGRect,我想知道这样做的正确方法是什么?感谢。

以下是Neckto要求的界面构建器中的按钮: enter image description here

2 个答案:

答案 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)