我想玩UIPopupController,我明白我无法检测到我的popover解雇 . 我的步骤:
1.从XCode创建示例(文件 - >新项目 - >实用应用程序)
2.添加到MainViewController.h UIPopoverControllerDelegate
#import "FlipsideViewController.h"
@interface MainViewController : UIViewController <FlipsideViewControllerDelegate,UIPopoverControllerDelegate>
@property (strong, nonatomic) UIPopoverController *flipsidePopoverController;
- (IBAction)showInfo:(id)sender;
@end
- 在MainViewController中:
- (IBAction)showInfo:(id)sender
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
} else {
if (!self.flipsidePopoverController) {
FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil];
controller.delegate = self;
self.flipsidePopoverController.delegate = self
self.flipsidePopoverController = [[UIPopoverController alloc] initWithContentViewController:controller];
}
if ([self.flipsidePopoverController isPopoverVisible]) {
[self.flipsidePopoverController dismissPopoverAnimated:YES];
} else {
[self.flipsidePopoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
}
}
-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
NSLog(@"OLOLO");
}
但是当我点击某个地方,并且popover消失时,Console中没有NSLog消息 . 我究竟做错了什么?
4 回答
将popover的代表设置为self,你也可以使用两个popover代理,即: -
早期的答案建议使用UIPopoverControllerDelegate,这似乎是实现目标的唯一合理方式 . 我认为添加一个实际的例子会很好,因为这不是最简单的事情 . 我的要求很简单 - 我希望背景视图模糊,而弹出窗口是可见的,所以这里是步骤:
在故事板中连接弹出窗口,在目标视图控制器属性中配置它的弹出窗口内容大小 .
通过打开.h文件并执行以下操作,使源视图控制器成为UIPopoverControllerDelegate:
您是否将MainViewController实例设置为popover的委托?
(如果你通过代码创建popover)
popover.delegate = self;
和