我正在制作一个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;
}
问题在于,当我这样做时,我得到一个空的弹出窗口:
然而,当我使用一个预先插入的按钮,在故事板上连接一个segue时,一切正常:
我真的希望你对我可能做错的事情有一些建议。提前谢谢!
答案 0 :(得分:3)
我似乎自己找到了答案。出于某种原因,您必须从故事板中实例化ViewController,如下所示:
PushButtonViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Push Button Popover"];
这样就可以正确显示视图。