dismissPopoverAnimated:メソッドをコールすると
– (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
がコールされない。
ポップオーバー コントロール作成時にポップオーバー コントロールのメンバ変数を参照し、alloc している場合は、必ず nil をセットしておく。
また、ポップオーバー コントロールへ release メッセージを送信し、解放しておかないとリークの原因になるので注意すること。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | // ポップオーバー コントロールの表示処理 - (void)dispPopoverControll { // ポップオーバー コントロールを表示する if (!popoverController_) { // ポップオーバー コントロールを alloc する : } if (!popoverController_.popoverVisible) { : } } #pragma mark - #pragma mark UIPopoverControllerDelegate Method // ポップオーバー コントロールがコントロール領域外をタップするなどして非表示とされた際の処理 - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { // the user dismissed the popover, so release it here [popoverController release]; popoverController = nil; popoverController_ = nil; } - (void)closePopoverController { // 本ポップオーバーを非表示にする if (popoverController_.popoverVisible == YES) { [popoverController_ dismissPopoverAnimated:YES]; [popoverController_ release]; popoverController_ = nil; } : } |