来自UIButton的PopOver

时间:2012-01-21 06:35:55

标签: iphone ios ios5

这是我的代码

-(IBAction)showMenu:(id)sender
{   
    Demo   *mainMenuTableView = [[Demo alloc] init];
    UIPopoverController *pop = [[UIPopoverController alloc]initWithContentViewController:mainMenuTableView];
    [pop setDelegate:self];

}

Demo是我的xib,包含一个tableview控制器的东西。这个“演示”作为全屏视图工作得很好。

我正在尝试使用此视图创建一个popover,但我已经尝试了我认为stackoverflow上的所有其他解决方案,但我仍然无法确定如何创建和调用popover ...

我确信我喜欢一两行代码......我希望。 任何帮助将不胜感激!

THX!

2 个答案:

答案 0 :(得分:12)

创建弹出控制器后,必须告诉它呈现弹出框。您可以使用presentPopoverFromRect:inView:permittedArrowDirections:animated:presentPopoverFromBarButtonItem:permittedArrowDirections:animated:。例如,我假设您已将showMenu:连接为UIButton的操作。因此,您可以在showMenu:

的末尾添加此内容
UIButton *button = (UIButton *)sender;
[pop presentPopoverFromRect:button.bounds
    inView:button
    permittedArrowDirections:UIPopoverArrowDirectionAny
    animated:YES];

您还需要在实例变量或属性中引用弹出控制器。否则,当showMenu:返回时,弹出控制器将被释放,这将导致崩溃。感谢Floydian指出这一点。

答案 1 :(得分:0)

您需要保留“pop”变量!只需将UIPopoverController“POV”设置为您的属性,并在IBAction中使用以下代码。

self.POV = [[UIPopoverController alloc]initWithContentViewController:mainMenuTableView];
[self.POV presentPopoverFromRect:button.bounds
inView:button
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];