0

我正在制作一个 iPad 应用程序,我在其中以编程方式将 UIButtons 放在 UIScrollView 内的 UIImageView 上。

当有人按下其中一个按钮时,我想展示一个 UIPopover。由于按钮是通过编程方式添加的,因此我还必须以编程方式呈现弹出框。

这是我展示弹出框的代码:

- (void)buttonHandler:(UIButton *)sender
{
    PushButtonViewController *controller = [[PushButtonViewController alloc] initWithButtonID:@"hej"];
    _pushButtonPopover = [[UIPopoverController alloc] initWithContentViewController:controller];

    _pushButtonPopover.delegate = self;

    if(![_pushButtonPopover isPopoverVisible]) {
       [_pushButtonPopover presentPopoverFromRect:sender.bounds inView:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    } else {
        [_pushButtonPopover dismissPopoverAnimated:YES];
    }
}

这是弹出视图控制器的初始化程序:

- (id)initWithButtonID:(NSString *)buttonID
{
    self = [super init];
    self.buttonID = buttonID;
    return self;
}

问题是当我这样做时,我得到一个空的弹出窗口:

屏幕截图 1 - 不工作

然而,当我使用一个预先插入的按钮,连接到故事板中的一个 segue 时,一切正常:

屏幕截图 2 - 工作正常

我真的希望您对我可能做错的事情有一些建议。先感谢您!

4

1 回答 1

3

我好像自己找到了答案。出于某种原因,您必须像这样从情节提要中实例化您的 ViewController:

PushButtonViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Push Button Popover"];

这样视图就可以正确显示。

于 2012-05-09T16:47:29.513 回答