オレオレポップオーバー〜UZMultipleLayeredPopoverController
UIPopoverController,グダグダですよね. 階層的に表示すると審査で文句言われるし,ビューコントローラからUIPopoverControllerのインスタンスにアクセスできないし,UIPopoverControllerを破棄してもインスタンスは開放されないし,容易に多重表示されちゃうし・・・・. とりあえず,グダグダです.
そこで,仕方がないのでiOS7のUIっぽいオリジナルのポップオーバーを作りました.
[cpp]
@interface UIViewController (UZMultipleLayeredPopoverController)
- (void)dismissCurrentPopoverController;
- (void)dismissMultipleLayeredPopoverController;
- (void)presentMultipleLayeredPopoverWithViewController:(UIViewController)viewController
contentSize:(CGSize)contentSize
fromRect:(CGRect)fromRect
inView:(UIView)inView
direction:(UZMultipleLayeredPopoverDirection)direction;
@end
[/cpp]
これら3つのメソッドだけで利用することができます. ポップオーバー上に表示するビューは,ビューコントローラをセットして作ります. このため,従来のUINavigcationControllerのように使うことができます. たとえば,以下のようなコードで,Storyboardから生成したビューコントローラをポップオーバー上に配置できます.
[cpp]
id viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"NavigationController"];
[self presentMultipleLayeredPopoverWithViewController:viewController
contentSize:CGSizeMake(320, 480)
fromRect:button.frame
inView:self.view
direction:UZMultipleLayeredPopoverAnyDirection];
[/cpp]
ソースは,BSDライセンスでgithubで公開しています. 使ってみてください.