私はビュー・コントローラーを持っています。 viewDidAppear
からanimated:NO
と表示されている場合は、2回目の表示時にその内容は表示されません。私はこれに問題を細分化しました:私はストーリーボードにセグの2つのコントローラーを追加しました。それぞれは同じポップオーバーコントローラーをviewDidAppear
に表示します。 それらのそれぞれの同じクラスのインスタンスである:モーダル・ポップ・オーバー・コントローラーは、viewDidAppearから提示されたときにコンテンツを表示しません。
#import "ViewController.h"
#import "PopupViewController.h"
@interface ViewController() <UIPopoverPresentationControllerDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self showPopover];
}
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection {
return UIModalPresentationNone;
}
- (void)showPopover {
PopupViewController* popoverController = [[PopupViewController alloc] initWithNibName:NSStringFromClass([PopupViewController class]) bundle:nil];
popoverController.modalPresentationStyle = UIModalPresentationPopover;
popoverController.preferredContentSize = CGRectInset(self.view.bounds, 20, 100).size;
popoverController.popoverPresentationController.sourceView = self.view;
popoverController.popoverPresentationController.sourceRect = CGRectMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds), 0, 0);
popoverController.popoverPresentationController.permittedArrowDirections = 0;
popoverController.popoverPresentationController.delegate = self;
[self presentViewController:popoverController animated:NO completion:nil];
}
@end
ポップオーバーは、アプリの起動時に正しく提示したが、第2のビューコントローラをプッシュで、ボタンをタップし、バックに空になっています。 animated
をYES
に変更すると、ポップオーバーが正しく表示されます。
編集:私はXcodeでビュー階層をデバッグする場合は、彼らがする必要がありますように、ビューはすべてのフレームと、正しく表示されます。
これは、デバイス(正しいポップオーバーにどのように見えるかです左は空、右は空)。
'viewDidDisappear'のように、2番目のView Controllerを押すと、Popoverが削除されますか? – dmorrow
2番目のビューコントローラに行く前に、その周囲の影をタップしてポップオーバーを解除します – pckill
最初のポップオーバーが消えるのを待っていますか?あなたのコンソールに警告がありますか? – Sulthan