presentPopoverFromRect导致一个空视图,但使用segue它工作正常

时间:2012-05-08 18:50:15

标签: xcode ipad ios5 xcode4 uipopovercontroller

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

当有人按下其中一个按钮时,我想呈现一个UIPopover。由于按钮已经以编程方式添加,我还必须以编程方式显示弹出窗口。

以下是我展示popover的代码:

- (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];
    }
}

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

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

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

Screenshot 1 - not working

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

Screenshot 2 - working fine

我真的希望你对我可能做错的事情有一些建议。提前谢谢!

1 个答案:

答案 0 :(得分:3)

我似乎自己找到了答案。出于某种原因,您必须从故事板中实例化ViewController,如下所示:

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

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