这是我的代码
-(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!
答案 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];