我在Ipad中制作应用程序,我在Xib中使用了一个pickerviewController,当用户单击特定按钮时我将其显示出来,现在我试图将该选择器视图放入弹出窗口中
这就是我试图实现这种口味的方式
pickerView.hidden=FALSE;
i have created outlet of picker and i unhide it here
UIViewController* popoverContent = [[UIViewController alloc] init];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 344)];
popoverView.backgroundColor = [UIColor whiteColor];
[popoverView addSubview:pickerView];
popoverContent.view = popoverView;
popoverContent.contentSizeForViewInPopover = CGSizeMake(320, 244);
//create a popover controller
UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
CGRect popoverRect;
popoverRect.origin.x =323;
popoverRect.origin.y = 713;
popoverRect.size.height = 215;
popoverRect.size.width = 70;
[popoverController presentPopoverFromRect:popoverRect
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionDown
animated:YES];
//release the popover content
[popoverView release];
[popoverContent release];
现在的问题是我的弹出窗口正在显示,但是它是黑色的,我为此感到挣扎,请告诉我我做错了什么或更正了代码谢谢您的帮助
最佳答案
似乎您的选择器视图隐藏在弹出窗口中的某个位置,因为尚未正确设置框架。因此,尝试将选择器视图的框架设置为等于弹出窗口的边界作为起点:
pickerView.frame = popoverView.bounds;
但是在将选择器视图添加为弹出窗口中的子视图之前,您需要从超级视图中正确删除选择器视图。
现在,默认情况下,Xcode将生成IBOutlet作为弱属性,当从超级视图中删除选择器视图时,这将导致释放该选择器视图。因此,您首先需要将选择器视图声明为强大的属性。
之后,您可以将其从当前超级视图中删除:
[pickerView removeFromSuperview];
您应该保留对弹出视图控制器的引用,例如,声明它是一个属性,然后调用dismissPopoverAnimated正确消除弹出窗口。