다른보기 컨트롤러보다 모달로 표시된보기 컨트롤러가 있습니다. viewDidAppear
에서 animated:NO
으로 표시되면 두 번째로 표시되는 내용이 표시되지 않습니다. 저는이 문제를 다음과 같이 요약했습니다 : 스토리 보드에 단편으로 연결된 두 개의 컨트롤러를 추가했습니다. 각 컨트롤러는 viewDidAppear
에 동일한 팝 오버 컨트롤러를 제공합니다. 그들 각각의 은 동일한 클래스의 인스턴스 :모달 popover 컨트롤러는 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
팝 오버가 앱 시작에 제대로 제시하지만, 버튼을 다시 눌러에 두 번째보기 컨트롤러를 밀어에 비어 있습니다. animated
을 YES
으로 변경하면 popovers가 올바르게 표시됩니다.
편집 :
이 그것 (장치에서 같은 올바른 팝 오버를 보는 방법이다 : 나는 엑스 코드에서 뷰 계층 구조를 디버깅 할 경우 그들이해야대로보기는 모든 프레임에 올바르게 표시됩니다 왼쪽은 공백이고 오른쪽은 비어 있음) :
'viewDidDisappear'에서 두 번째보기 컨트롤러를 누르면 Popover가 제거됩니까? – dmorrow
두 번째보기 컨트롤러로 가기 전에 그림자 주위를 두드려 팝 오버를 닫습니다. – pckill
첫 번째 팝업이 사라질 때까지 기다리고 계십니까? 콘솔의 경고? – Sulthan