关闭Storyboard中打开的Popover

可能UIPopoverController只能在iPad上使用,而这个问题又是使用iOS5之后出现的,很少人关注这个,我之前也花了不少时间才在一个外国人的blog里面找到解决办法。

这个问题是由于使用storyboard连接之后,直接使用时VC中是不知道这个popover指针的,从而无法通过dismisspopover来关闭,所以想要在程序中控制popover需要从storyboard的segue中找到这个popover的指针:
假如你是从FooAViewController弹出FooBViewController,首先在IB中选中这个popover segue加上一个identifier,如showPopover,如果你需要在FooB中dismiss,那就在FooB中加入属性@property (nonatomic,weak) UIPopoverController *popover;,然后在FooA中的-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender代码段中加入
复制代码
  1. if ([segue.identifier isEqualToString:@"showPopover"]) {
  2.              FooBViewController *bVC=segue.destinationViewController;
  3.              bVC.popover =  [(UIStoryboardPopoverSegue *)segue popoverController];
  4. }



     主要就是用[(UIStoryboardPopoverSegue *)segue popoverController]这句得到popover的指针,之后你自己就可以随意操作了。

PS:建议使用popover的时候尽量用代码,比较好控制,在storyboard中直接使用弹出的话,从普通按钮弹出还好,如果从bar button item点击弹出的话,反复点击是不会自动dismiss的,只会不断的创建新的popover框


原文链接:http://blog.csdn.net/pb8/article/details/7822763



你可能感兴趣的:(ios)