UIPopoverController presentPopoverFromRect问题

0xS*_*ina 12 cocoa-touch objective-c uipopovercontroller ios

我想在单击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];
}
Run Code Online (Sandbox Code Playgroud)

箭头方向为"任意",它完全遮盖了按钮,这是它的样子: 在此输入图像描述

如果我的方向是"正确的",它会好一点,但仍然有一些弹出窗口和按钮之间的空间,它似乎不对. 在此输入图像描述 我不想做一些"技巧"或"黑客"并在试验/错误的基础上使用CGRect,我想知道这样做的正确方法是什么?谢谢.

这是Neckto要求的界面构建器中的按钮: 在此输入图像描述

Mat*_*ats 50

我认为你正在混合坐标系.在你的视图中的每个级别 - hiearchy,原点都被移动了.因此[sender frame]in 的位置self.view不是按钮所在的位置.

尝试:

[pc presentPopoverFromRect:[sender bounds]
                    inView:sender
  permittedArrowDirections:UIPopoverArrowDirectionAny 
                  animated:YES];
Run Code Online (Sandbox Code Playgroud)