5

私はiphoneプロジェクトをipadに変換しています。iPhoneには、を使用してloginViewControllerを開くmainViewControllerがありますaddSubView

iPadでは、そのloginViewControllerをポップオーバーで表示したいと思います。だから私は次のようなことをしました:

UIPopoverController *loginPop = [[UIPopoverController alloc] initWithContentViewController:loginViewController];
[loginPop presentPopoverFromRect:CGRectMake(150, 150, 90, 90) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:true];

これは正常に機能します。問題は、loginViewControllerがその「ビジネス」を終了するときです。iPhoneでは単純なものと呼んでいますが、iPadでは[self.view removeFromSuperview];これによりビューがPopoverControllerから削除されますが、ポップアップのフレームは残ります。

だから私の質問は:loginViewController内からPopoverControllerコンテナを削除する簡単な方法はありますか(デリゲートや通知を使用せずに)?

4

2 に答える 2

9

はい、loginViewControllerポップオーバーへの参照を保持する必要があります。次にdismissPopoverAnimated:、ポップオーバー自体のメソッドを使用してそれを削除できます。

于 2011-03-24T12:38:56.437 に答える
1

実際に実装したいのですが、アプリケーションデリゲートにアクセスできることを思い出しました。アプリケーションデリゲートは、メインビューにアクセスできます。そこに、ポップオーバーのプロパティを格納し、を呼び出すことができますdismissPopoverAnimated

このような :

MyAppDelegate *app = (MyAppDelegate *) [[UIApplication sharedApplication] delegate];
MyViewController * myView =[app viewController];
[myView.popover dismissPopoverAnimated:YES];
于 2011-05-19T03:42:45.687 に答える