我的UIPopOverController有时会在旋转(不可重现)时丢失其内容,或者例如我从横向的tableview中打开一些内容,将设备旋转为纵向,然后以纵向打开相同的内容。
显示Popovercontroller但没有内容可见,即它是黑色的....有没有人偶然发现这个或类似的东西?
答案 0 :(得分:4)
在旋转发生后使用UIPopoverController时遇到了类似的问题(UIPopoverController的大小奇怪地改变了,它将自己重新定位到屏幕中的奇怪位置等)。
对我有用的技巧是在应用程序中重载UIViewController的didRotateFromOrientation:(UIInterfaceOrientation)方法。因此,在显示UIPopoverController时显示的应用程序的UIViewController类重载该方法,并从那里再次调用UIPopoverController的presentPopoverFromRect:方法:
-(void) didRotateFromOrientation:(UIInterfaceOrientation)uiOrientation {
if (popoverController.popoverVisible) {
// Define rect to be the UI component's rect where you want to tie the popoverController
CGRect rect = CGRectMake(...);
// This method will reposition the popover correctly
[popoverController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:NO];
}
}
请注意,如果您使用UIPopoverController的presentPopoverFromBarButtonItem:方法将UIPopoverController绑定到UIBarButtonItem,则系统应该在轮换后自动正确地定位弹出窗口。